UTAsriel @ 2023-02-07 10:47:22
#include <stdio.h>
int sc[40000+10];
int main(void){
int x=0,n,a,sz[40000+10],pd=0,ssc=1,y;
while(scanf("%1d",&n)==1){
if(n==1||n==0){
x++;
sz[x]=n;
}
}
for(a=1;a<=x;a++){
while(sz[a]==pd){
sc[ssc]++;
a++;
}
a--;
ssc++;
if(pd==1){
pd=0;
}
else{
pd=1;
}
}
for(y=3;(y*y)<x;y++){}
printf("%d",y);
for(int b=1;b<ssc;b++){
printf(" %d",sc[b]);
}
return 0;
}
待会还要背单词,无法及时回复,请见谅。
by ricky_lin @ 2023-02-07 11:51:22
while(sz[a]==pd)
改成
while(sz[a]==pd && a <= x)
原因:你的sz
数组可能越界
by ricky_lin @ 2023-02-07 11:52:16
@UTAsriel