一個(gè)數(shù)組A中存有N(N>0)個(gè)整數(shù)离咐,在不允許使用另外數(shù)組的前提下嗦篱,將每個(gè)整數(shù)循環(huán)向右移M(M>=0)個(gè)位置贺纲,即將A中的數(shù)據(jù)由(A0 A1……AN-1)變換為(AN-M …… AN-1 A0 A1……AN-M-1)(最后M個(gè)數(shù)循環(huán)移至最前面的M個(gè)位置)竿痰。如果需要考慮程序移動(dòng)數(shù)據(jù)的次數(shù)盡量少损晤,要如何設(shè)計(jì)移動(dòng)的方法软棺?
輸入格式:每個(gè)輸入包含一個(gè)測(cè)試用例,第1行輸入N ( 1<=N<=100)尤勋、M(M>=0)喘落;第2行輸入N個(gè)整數(shù),之間用空格分隔最冰。
輸出格式:在一行中輸出循環(huán)右移M位以后的整數(shù)序列瘦棋,之間用空格分隔,序列結(jié)尾不能有多余空格暖哨。
輸入樣例:
6 2
1 2 3 4 5 6
輸出樣例:
5 6 1 2 3 4
#include <stdio.h>
int main(void)
{
int n, m;
scanf("%d %d", &n, &m);
int mid = n - m;
int arr[n];
int i;
for (i=0; i<n; i++){
scanf("%d", &arr[i]);
}
// 先輸出后面的 m 位元素
for (i=mid; i<n; i++){
printf("%d ", arr[i]);
}
// 輸出前面的 n-m 位元素
for (i=0; i<mid; i++){
printf("%d", arr[i]);
if (i < mid-1 ){
printf(" ");
}
}
}
測(cè)試有兩個(gè)沒(méi)通過(guò)赌朋, 不知道還有什么地方還沒(méi)考慮到的