水無月嘉祥 @ 2019-08-11 20:49:33
这道题我本地评测能过,试了好几个在线IDE也能过,为什么就洛谷IDE的输出有问题,求大佬指教!
代码如下:
#include<bits/stdc++.h>
using namespace std;
int a,cnt=-1,cnt2=0,cnt3=1,change=1;//N的值,计数,取模判断该检查 0 or 1,换行
char str[205];
char imap[45000];
bool vis[2];
int main()
{
//freopen("testdata.in","r",stdin);
gets(str);
a=strlen(str);
for(int i=0;i<a;i++)
{
cnt++;
imap[cnt]=str[i];
}
while(change<a)
{
gets(str);
change++;
for(int i=0;i<a;i++)
{
cnt++;
imap[cnt]=str[i];
}
}
int z=strlen(imap);
printf("%d ",a);
for(int i=0;i<z;i++)
{
if(cnt3%2==1)//奇数检查0
{
if(imap[i]=='0')
{
cnt2++;
vis[0]=true;//0已出现;
vis[1]=false;//1清零
}
else
{
if(vis[0])
{
printf("%d ",cnt2);
vis[1]=true;
vis[0]=false;
cnt2=1;
cnt3++;
continue;
}
else
{
printf("0 ");
vis[1]=true;
vis[0]=false;
cnt2=1;
cnt3++;
continue;
}
}
}
else//偶数检查1
{
if(imap[i]=='1')
{
cnt2++;
vis[1]=true;//1已出现
vis[0]=false;//0清零
}
else
{
if(vis[1])
{
printf("%d ",cnt2);
vis[1]=true;
vis[0]=false;
cnt2=1;
cnt3++;
continue;
}
else
{
printf("0 ");
vis[0]=true;
vis[1]=false;
cnt2=1;
cnt3++;
continue;
}
}
}
}
printf("%d",cnt2);
return 0;
}
可能有点混乱,请见谅。
by ud2_ @ 2019-08-11 20:55:34
不要用 gets
。
by 水無月嘉祥 @ 2019-08-11 20:59:47
@sjx233 谢谢大佬!