一道【简单】的C++题,一些样例是对的,但是在线评测是错误的,请高手指点出错误原因,并写出正确代码。

2025-01-02 06:40:20
推荐回答(1个)
回答1:

#include
#include
#include
#include
#include
#include
#define MAX 3001

using namespace std;

int next[MAX],f[MAX],l[MAX];

int main()
{
int i,n,num0=0,num1=0;;
memset(l,0,sizeof(l));
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&l[i]);
if(l[i])
num1++;
}
num0=n-num1;

for(i=1;i<=num0;i++)
f[i]=0;
for(i=num0+1;i<=n;i++)
f[i]=1;

int ci=1;
for(i=1;i<=n;i++)
{
if(!l[i])
{
next[ci]=i;
ci++;
}
}
for(i=1;i<=n;i++)
{
if(l[i])
{
next[ci]=i;
ci++;
}
}

int count=1;
ci=n-1;
while(ci--)
{
printf("%d ",f[count]);
count=next[count];
}
printf("%d\n",f[count]);
return 0;
}
好久不写了...程序我还是有点懒的看= =...,直接给你我的AC程序对拍...