haoyun1 @ 2020-08-04 21:34:46
#include<cstdio>
#include<iostream>
int a[300];
int main(){
int n=0,m=0,x=0;
bool p=0;
char c=getchar();
while (c!='\n'){
m++;
if (c==p+48) x++; else{
p=!p;
a[++a[0]]=x;
x=1;
}
c=getchar();
}
n=m;m=0;
printf("%d ",n);
for (int i=1;i<=a[0];i++) printf("%d ",a[i]);
for (int i=2;i<=n;i++){
for (int j=1;j<=n;j++){
c=getchar();
if (c==p+48) x++; else{
p=!p;
printf("%d ",x);
x=1;
}
}
c=getchar();
}
printf("%d",x);
}
第一组数据
11111 00100 11111 00100 11111
5 0 5 2 1 2 5 2 1 2 5
by haoyun1 @ 2020-08-04 21:44:12
把判换行符改了改,还有加了把多余字符读了就过了
#include<cstdio>
#include<iostream>
int a[300];
int main(){
int n=0,m=0,x=0;
bool p=0;
char c=getchar();
while (c>=48&&c<=49){//这里做了更改
m++;
if (c==p+48) x++; else{
p=!p;
a[++a[0]]=x;
x=1;
}
c=getchar();
}
n=m;m=0;
printf("%d ",n);
for (int i=1;i<=a[0];i++) printf("%d ",a[i]);
for (int i=2;i<=n;i++){
while(c<48||c>49) c=getchar();//这里把多余字符读了
for (int j=1;j<=n;j++){
if (c==p+48) x++; else{
p=!p;
printf("%d ",x);
x=1;
}
c=getchar();
}
}
printf("%d",x);
}
by 老子是北瓜 @ 2020-08-04 21:44:45
自 救
by x_miracle @ 2020-08-05 16:27:10
@haoyun1
把'\n'改成'\r'也可以过
#include<cstdio>
#include<iostream>
int a[300];
int main(){
int n=0,m=0,x=0;
bool p=0;
char c=getchar();
while (c!='\r'){//这里做了更改
m++;
if (c==p+48) x++; else{
p=!p;
a[++a[0]]=x;
x=1;
}
c=getchar();
}
n=m;m=0;
printf("%d ",n);
for (int i=1;i<=a[0];i++) printf("%d ",a[i]);
for (int i=2;i<=n;i++){
while(c<48||c>49) c=getchar();
for (int j=1;j<=n;j++){
if (c==p+48) x++; else{
p=!p;
printf("%d ",x);
x=1;
}
c=getchar();
}
}
printf("%d",x);
}
by haoyun1 @ 2020-08-05 16:48:17
所以是系统不同换行符不同导致的问题??
by IT小白 @ 2020-08-13 10:56:18
@x_miracle 感谢大佬的见解,我也是这个问题,把'\n'换成'\r'就过了
by ld2002 @ 2021-01-13 13:35:39
@x_miracle 我的换成\r也不可以