osfly @ 2021-02-05 20:40:27
#include<cstdio>
char ch;
char last='a';
int ysm[40000];
int tot=-1;
int cnt;
int cal;
bool flag;
int main()
{
for(int i=0;i<40000;i++) ysm[i]=1;
while(~scanf("%c",&ch))
{
if(ch!='\n'&&ch!='\r')
{
if(ch=='1'&&cnt==0) tot++;
if(last!=ch)
{
last=ch;
tot++;
}
else ysm[tot]++;
cnt++;
}
else if(!flag)
{
cal=cnt;
flag=true;
}
}
printf("%d ",cal);
for(int i=0;i<=tot;i++) printf("%d ",ysm[i]);
return 0;
}
by Terrible @ 2021-02-05 21:43:44
@osfly
80分的输入都是1开头,但是题目的表述是
第一个数表示连续有几个0,第二个数表示接下来连续有几个1,第三个数再接下来连续有几个0,第四个数接着连续几个1,以此类推……
第一个数不是0,第二个输出数据要是0,表示输出了0个0。
你可以尝试着char last='0';
你的测试点上写着:
Wrong Answer. wrong
answer On line 1 column
3, read 1, expected 0.
就是第一行第三个字符出错,人家要'0'你给了个'1'。要学会读懂测试点的错误反馈。
(话说这么玩的话,是不是每两个字符都可以穿插很多个0,不过能理解出题人意思就好)
(也别说是自己理解题意的能力不行,这点上辩证的看,需要出题人和做题人互相理解。)