求助!!!为啥全是wa,样例可以ac,自己也试了几个也全都可以,提交全都不对

P1320 压缩技术(续集版)

SiuSiuSiuSiuSiuSiu @ 2023-03-03 12:59:07

#include<iostream>
#include<string.h>
using namespace std;

char str[40005];

int main()
{
    char str1[205];
    gets(str1);
    strcat(str,str1);
    int n1=strlen(str1);
    for(int i=2; i<=n1; i++)
    {
        gets(str1);
        strcat(str,str1);//字符拼接
    }
    int arr[405];
    cout<<n1<<' ';
    int k=0,t=0;
    int n=strlen(str)-1;

    while(k<=n)
    {
        int a=0,b=0;//统计0和1的数目
        while(k<=n&&str[k]=='0')
        {
            a++;
            k++;
        }
        arr[++t]=a;
        while(k<=n&&str[k]=='1')
        {
            b++;
            k++;

        }
        arr[++t]=b;
    }

    for(int i=1;i<=t;i++)
    {
        cout<<arr[i]<<' ';
    }
}

by xxxx100 @ 2023-03-28 22:00:16

同求

#include<bits/stdc++.h>
using namespace std;
inline int read()
{
    register int x=0,f=1;
    register char ch=getchar();
    while(ch<'0'||ch>'9')
    {
        if(ch=='-') f=-1;
        ch=getchar();
    }
    while(ch>='0'&&ch<='9')
    {
        x=(x<<3)+(x<<1)+(ch^48);
        ch=getchar();
    }
    return x*f;
}
inline void write(int x,char lst=0)
{
    if(x<0)
    {
        x=~(x-1);
        putchar('-');
    }
    if(x>9) write(x/10);
    putchar(x%10+48);
    if(lst) putchar(lst);
}
signed main()
{
    int n=0,a[40200],cnt=0,now=0,f,sum=0;
    int flag=-1,flag2=true;
    while(f=getchar())
    {
        if(f=='\n')
        {
            f=getchar();
            flag2=false;
        }
        if(flag2) n++;
        f-='0';
        if(flag==-1) flag=f;
        if(f!=flag)
        {
            a[cnt++]=now;
            sum+=now;
            now=0;
            flag=!flag;
        }
        now++;
        if(sum==n*n-now&&flag2==false)
        {
            a[cnt++]=now;
            sum+=now;
            now=0;
            break;
        }
    }
    write(n,' ');
    for(int i=0;i<cnt;i++) write(a[i],' ');
    return 0;
}

|