#include"stdio.h"
int main()
{
int N,M,b=0,x=0;
scanf("%d%d",&N,&M);
int a[1][N-1];//N為輸入的數的個數,M為右移的位數!
while(b<=N-1)
{
scanf("%d",&a[0][b]);
b++;
}
b=0;
while(b<=N-1)
{
if(b+M>N-1)
a[1][b+M-N-1]=a[0][b];
else a[1][b+M]=a[0][b];
b++;
}
b=0;
while(b<=N-1)
{
printf("%d ",a[1][b]);
b++;
}
}
如題:一個陣列A中存有N(>0)個整數,在不允許使用另外陣列的前提下,將每個整數回圈向右移M(≥0)個位置,即將A中的資料由(A
?0
?? A
?1
?? ?A
?N?1
?? )變換為(A
?N?M
?? ?A
?N?1
?? A
?0
?? A
?1
?? ?A
?N?M?1
?? )(最后M個數回圈移至最前面的M個位置)。如果需要考慮程式移動資料的次數盡量少,要如何設計移動的方法?
輸入格式:
每個輸入包含一個測驗用例,第1行輸入N(1≤N≤100)和M(≥0);第2行輸入N個整數,之間用空格分隔。
輸出格式:
在一行中輸出回圈右移M位以后的整數序列,之間用空格分隔,序列結尾不能有多余空格。
輸入樣例:
6 2
1 2 3 4 5 6
輸出樣例:
5 6 1 2 3 4
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/218939.html
標籤:C++ 語言
上一篇:沒看出來為什么會有segmentation fault,求助各位大佬
下一篇:新手報道 求大佬們指點迷津
