输入01序列 长度为n
将随便两个0和1交换位置 使最后的序列和原序列不一样
#include<stdio.h>
int main(){
int n,cnt1=0,cnt2=0;
int a[2000000]={0},a1[2000000]={0},a2[2000000]={0};
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(int i=0;i<n;i++){
for(int j=i+1;j<=n;j++){//想的是如果i和i+1位置一个是1一个是0就交换
if(a[i]==1&&a[j]==0){
int temp;
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
for(int i=0;i<n;i++)
printf("%d",a[i]);
return 0;
}
谢谢大家!
既然是随便2个,那你不需要双重for循环
就让第0个和其中的某一个交换,反正只要不一样不就行了
交换完就break啊,不要一直这样交换下去
数组太大了,减到十
运行了一下,直接就退出了。问题出在第5行,定义静态数组是有大小限制的,a1和a2用不到的话建议直接删了,或者把数组长度改小。另外,比较两个元素是否相同可以用异或运算。
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!