Dawn_Zhang @ 2024-08-28 14:53:12
#include<bits/stdc++.h>
using namespace std;
int a[400005];
int cnt=0;
int len;
void fun(string s){
for(int i=0;i<=len-1;i++){
a[++cnt]=s[i]-'0';
}
}
int main(){
string s;
cin>>s;
len=s.size();
for(int k=1;k<=len-1;k++){
cin>>s;
fun(s);
}
cout<<len<<" ";
int f=0,nuu=0;
for(int i=1;i<=cnt;i++){
if(f==0){
if(a[i]==0)nuu++;
else{
cout<<nuu<<" ";
nuu=1;
f=1;
}
}
else{
if(a[i]==1)nuu++;
else{
cout<<nuu<<" ";
nuu=1;
f=0;
}
}
}
}
有一个点是这个
11111
00100
11111
00100
11111 然后输出:5 0 2 1 2 5 2 1 2 但是我的确输出:5 2 1 2 5 2 1 2 怎么调0都不能输出
by Yxy7952 @ 2024-08-28 15:20:19
@Dawn_Zhang
看代码,求关
#include<bits/stdc++.h>
using namespace std;
int a[400005];
int cnt=0;
int len;
void fun(string s){
for(int i=0;i<=len-1;i++){
a[++cnt]=s[i]-'0';
}
}
int main(){
string s;
cin>>s;
len=s.size();
fun(s);//第一个输入
for(int k=1;k<=len-1;k++){
cin>>s;
fun(s);
}
cout<<len<<" ";
int f=0,nuu=0;
for(int i=1;i<cnt;i++){
if(f==0){
if(a[i]==0)nuu++;
else{
cout<<nuu<<" ";
nuu=1;
f=1;
}
}
else{
if(a[i]==1)nuu++;
else{
cout<<nuu<<" ";
nuu=1;
f=0;
}
}
}
if(f==0){
if(a[cnt]==0)nuu++;
else{
nuu=1;
f=1;
}
}
else{
if(a[cnt]==1)nuu++;
else{
nuu=1;
f=0;
}
}
cout<<nuu;//最后要特判
}
by Dawn_Zhang @ 2024-08-28 15:28:57
@yixingyou 谢谢,已关