0分求助!
查看原帖
0分求助!
735164
pengqiushi楼主2022/12/31 11:47

代码如下:

#include<iostream>
using namespace std;
int a[1005],b[1005],room[6];
int n;
int sum=0;
void find(){
	int c1,c2;
	for(int i=1; i<=n; i++)
		if(a[i]==1)
			c1++;
		else if(a[i]==2)
			c2++;
	room[1]=c1;
	room[2]=c1+c2;
	room[3]=n;
	for(int i=1; i<=room[1]; i++)
		b[i]=1;
	for(int i=room[1]+1; i<=room[2]; i++)
		b[i]=2;
	for(int i=room[2]+1; i<=room[3]; i++)
		b[i]=3;
	return;
}
void scan_1(){
	for(int i=1; i<=n; i++)
		if(a[i]!=b[i])
			for(int j=room[a[i]-1]+1; j<=room[a[i]]; j++)
				if(a[j]==b[i]&&a[i]==b[j]){
					swap(a[i],a[j]);
					sum++;
				}
	return;
}
void scan_2(){
	for(int i=1; i<=n; i++)
		if(a[i]!=b[i])
			for(int j=room[a[i]-1]+1; j<=room[a[i]]; j++)
				if((a[j]==b[i]||a[i]==b[j])&&a[i]!=a[j]){
					swap(a[i],a[j]);
					sum++;
				}
	return;
}
int main()
{
	cin>>n;
	for(int i=1; i<=n; i++)
		cin>>a[i];
	find();
	scan_1();
	scan_2();
	cout<<sum;
	return 0;
}

问题:运行可以,提交后全RE,复制IDE并输入样例,输出0。

谁能帮忙看看啊

2022/12/31 11:47
加载中...