求助大佬!

P1320 压缩技术(续集版)

水無月嘉祥 @ 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 谢谢大佬!


|