一个数组A中存有N(N>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(M>=0)个位置,即将A中的数据由( A 0 A 1 A_0A_1 A0A1…… A N − 1 A_{N-1} AN−1)变换为( A N − M … … A N − 1 A 0 A 1 … … A N − M − 1 A_{N-M} …… A_{N-1} A_0 A_1……A_{N-M-1} AN−M……AN−1A0A1……AN−M−1)(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?
输入格式:
每个输入包含一个测试用例,第1行输入N(1≤N≤100)和M(≥0);第2行输入N个整数,之间用空格分隔。
输出格式:
在一行中输出循环右移M位以后的整数序列,之间用空格分隔,序列结尾不能有多余空格。
输入样例:
1
2
36 2 1 2 3 4 5 6
输出样例:
1
25 6 1 2 3 4
暴力法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int M = sc.nextInt(); M = M % N; int[] arr = new int[N]; for(int i = 0; i < N; i++){ arr[i] = sc.nextInt(); } //数组arr[N] , 向右移M位 for(int i = 0; i < M; i++){ int tmp = arr[N-1]; for(int j = N-1; j > 0; j--){ arr[j] = arr[j-1]; } arr[0] = tmp; } for (int i = 0; i < N - 1; i++) { System.out.print(arr[i] + " "); } System.out.print(arr[N - 1]); } }
更多题解
PAT乙级题解大全 Java
最后
以上就是健康泥猴桃最近收集整理的关于1008 数组元素循环右移问题 (20分) Java输入格式:输出格式:输入样例:输出样例:暴力法更多题解的全部内容,更多相关1008内容请搜索靠谱客的其他文章。
发表评论 取消回复