问题描述:
设有m个元素的数组,先输入正整数n,表示数组中每个元素循环右移n个单位,求输出后的数组
基本初步思路:一个一个移动,循环n次每次要使用temp储存a[m-1]
#include<stdio.h>
int main()
{
int m,n;
scanf("%d %d",&m,&n);
n%=m;
int a[m];
int i;
for(i=0;i<m;i++)
{
scanf("%d",&a[i]);
}
int temp;
int j;
for(j=0;j<n;j++)
{
temp=a[m-1];
for(i=m-1;i>0;i--)
{
a[i]=a[i-1];
}
a[i]=temp;
}
for(i=0;i<m;i++)
{
printf("%d ",a[i]);
}
return 0;
}
现在对其优化
基本思路:构建一个新数组,将原数组后n个元素取出,剩下的向后移动到底部,再将新数组的元素填充至原数组
#include<stdio.h>
int main()
{
int m,n;
scanf("%d %d",&m,&n);
n%=m;
int a[m];
int i;
for(i=0;i<