题目链接->link
思路
- 按照题意要求既要交换次数越少,又不能借助辅助数组的方法暂时没想到…不过可以采用取巧的做法,即先输出后m个元素,再输出前n-m个元素即可。
- 注意m可能大于n,m大于n时,可以令m=m%n,因为数组循环右移n次不变。
- 注意格式,最后一个元素输出不能跟空格,循环中作判断即可。
代码
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <iostream>
using namespace std;
int main(){
int n,m;
scanf("%d%d",&n,&m);
if(m>n){
m=m%n;
}
int i,a[n];
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(i=n-m;i<n;i++){
printf("%d ",a[i]);
}
for(i=0;i<n-m;i++){
if(i!=(n-m-1)){
printf("%d ",a[i]);
}
else printf("%d\n",a[i]);
}
}