difficultlong @ 2024-09-01 10:18:53
#include<bits/stdc++.h>
using namespace std;
char s1[201],ch;
int sum=1;
char s[40001];
int main(){
scanf("%s",s1+1);
int len=strlen(s1+1);
for(int i=1;i<=len;i++){
s[i]=s1[i];
}
int p=len;
for(int i=len;i<=len*len+6;i++){
scanf("%c",&ch);
if(ch=='\n'){
continue;
}
p++;
s[p]=ch;
}
printf("%d ",len);
for(int i=1;i<=len*len-1;i++){
if(s[i]==s[i+1]){
sum++;
}
else{
printf("%d ",sum);
sum=1;
}
}
printf("%d",sum);
return 0;
}
求大佬指出错误,难道真的没有人知道我的错误吗(全部错误)
by iqiqiqiqiqiqiqiq @ 2024-09-01 10:27:03
scanf能填表达式么?s1+1怎么输入
by lgvc @ 2024-09-01 10:31:52
第一个,如果第一个字符是 1,你要输出一个 0。然后有 len 个换行,len^2+6 不够,要开成 len^2+len
by lgvc @ 2024-09-01 10:32:10
建议后面也用 %s 读入
by liuhaoyan0323 @ 2024-09-01 10:32:54
你理解错题意了,交替输出0,1个数,不是输出连续字符个数。 @bianchengzai
by liuhaoyan0323 @ 2024-09-01 10:34:33
具体来说对于数据:
11
11
你应该输出
2 0 4
而不是
2 4
by _8008008 @ 2024-09-01 10:36:32
@iqiqiqiqiqiqiqiq @iqiqiqiqiqiqiqiq scanf可以这样输入,这样传入的是地址
by pigeonteam @ 2024-09-01 10:36:32
@iqiqiqiqiqiqiqiq s1+1是一个字符数组指针
by liuhaoyan0323 @ 2024-09-01 10:39:42
@iqiqiqiqiqiqiqiq @lgvc @_8008008 @pigeonteam @bianchengzai
综合上述错误,您的代码可以改为:
#include<bits/stdc++.h>
using namespace std;
char s1[2001],ch;
int sum=1;
char s[40001];
int main(){
scanf("%s",s1+1);
int len=strlen(s1+1);
for(int i=1;i<=len;i++){
s[i]=s1[i];
}
int p=len;
for(int i=len;i<=len*len+len;i++){
scanf("%c",&ch);
if(ch=='\n'){
continue;
}
s[++p]=ch;
}
printf("%d ",len);
if(s[1]=='1')printf("0 ");
for(int i=1;i<=len*len-1;i++){
if(s[i]==s[i+1]){
sum++;
}
else{
printf("%d ",sum);
sum=1;
}
}
printf("%d",sum);
return 0;
}
rt
by iqiqiqiqiqiqiqiq @ 2024-09-01 10:50:19
@pigeonteam 我知道,但是%s?意思是空开开头是吗?要不用字符串string吧,可以直接加
by gavinliu266 @ 2024-09-01 11:06:36
不懂不要乱回 @iqiqiqiqiqiqiqiq
可以自行百度。