NowcoderGirl编程比赛第三题。难度吧我个人觉得还行,因为很好想,也很好实现。
题目要求:
输入n个数字,第i个数字不能和i相等。如果相等,只能和离它最近的数字进行交换。问交换多少次可以满足题目要求。
例:n = 5;这5个数字分别为1,4,3,2,5. 答案:交换两次。
很容易,我们想到的是遍历,如果与下标相等就交换位置。所以程序也自然很容易就可以写出来了
#include <stdio.h>
int main(void){
int n;
scanf("%d",&n);
int array[n];
for(int i = 0;i<n;i++){
scanf("%d",&array[i]);
}
int temp;
int flag = 0;
for(int i = 0;i<n;i++){
if(array[i] == i+1){
temp = array[i];
array[i] = array[i+1];
array[i+1] = temp;
flag++;
}
}
printf("%d\n",flag);
for(int i = 0;i<n;i++){
printf("% d",array[i]);
}
}