yamakaze @ 2020-07-06 01:14:07
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
bool s; //最后判断是在数1还是0
char a[40000]={'\0'},b;
int i,j,k;
for(i=0;(b=getchar())!='\n';i++)
{
a[i]=b;
}
j=i;
//↑先把第一行录入数组,顺便判断一行几个字符
for(i=j-1;i<j*j-1;)
{
if((b=getchar())!='\n')
{
i++;
a[i]=b;
}
}
//↑将后续各行的字符滤掉换行符并录入数组
cout<<j<<" "; //输出每行字符数
for(i=0,k=0,s=false;a[i]!='\0';)
{
if(!s&&a[i]=='0')
{
k++;i++;
}
else if(s&&a[i]=='1')
{
k++;i++;
}
else
{
cout<<k<<" ";
k=0;
s=!s;
}
}
//↑0和1交替计数并输出数目
cout<<k;
//↑输出最后一个被上面循环落下的最后一个数目
return 0;
}
第一组输入和输出分别是
11111
00100
11111
00100
11111(输入)
5 0 5 2 1 2 5 2 1 2 5 (输出)
才5x5,怎么会超时呢...大佬们帮我康康罢.
by yamakaze @ 2020-07-06 01:16:55
本地也能正常输出的说
by garethhkm2023 @ 2020-07-06 02:47:04
線上ide也沒問題 :/
by garethhkm2023 @ 2020-07-06 03:49:15
wasai我明白了
在某些烂系统上新行是\r\n而不(只)是\n
所以你输入数据的部分会错误判断输入长度等等
解决方法:把 ...!='\n'
换成...>='0'
by qss_ @ 2020-07-06 08:54:48
@garethhkm2023 是>= '\0'
吧?
by yamakaze @ 2020-07-06 12:09:12
@garethhkm2023 淦!大佬牛啤!
by garethhkm2023 @ 2020-07-06 20:17:41
@王蓝棋俊 ‘0’是数字零 就包括我们想要的‘0’和‘1’而不包括'\n','\r'
'\0'是空字符
by qss_ @ 2020-07-06 20:46:50
@garethhkm2023 知道了,我没读题...只是根据经验推测(逃