概述
蓝桥杯:数组移动
问题描述
初始数组A[N]中为1,2,…,N,N个数字,现要进行M次操作,每次操作给定一个数字i,记其在数组中的位置为Bi,将A[1]…A[Bi]移到数组末尾。
输入格式
输入的第一行包含两个整数N,M。接下来M行,每行一个正整数,表示给定的数字i。
输出格式
一行,输出M次操作后的A数组。
样例输入
5 2
3
2
样例输出
3 4 5 1 2
样例说明
第一次操作后变为 4 5 1 2 3
第二次操作后变为 3 4 5 1 2
数据规模和约定
N<=105,M<=105
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int n=input.nextInt(); //A数组的长度
int m=input.nextInt();//m次操作
int []A=new int[n];
int []M=new int[m];
//A数组
for (int i=0;i<n;i++){
A[i]=i+1;
}
//存储操作次数
for (int i=0;i<m;i++){
M[i]=input.nextInt();
}
int distance=M[m-1];//最后一次的操作次数
int []B=new int[distance];//存储A[1]..A[distance]
for (int i=0;i<distance;i++){
B[i]=A[i];
}
int s=0;
for (int i=0;i<A.length;i++){
if (i==A.length-distance){//A[1]..A[distance]移到数组末尾
while (s< B.length){
A[i]=B[s];
s++;
i++;
}
}else{//A[i+distance]往前挪
A[i]=A[i+distance];
}
}
//遍历数组
for (int i=0;i<n;i++){
System.out.print(A[i]+" ");
}
}
}
最后
以上就是包容小鸭子为你收集整理的蓝桥杯:数组移动蓝桥杯:数组移动的全部内容,希望文章能够帮你解决蓝桥杯:数组移动蓝桥杯:数组移动所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复