刚写好的一篇忘记保存刷新了一下全都没了?
那就再来一次吧
这道题于我来说难得是输入问题,至于输入问题强制结束即可。在此题之前我一直认为bool只能判断真假,但没想到也可以当作0和1来使用,俺真的是蒟蒻...怎么说也算新学了一招叭
#include<iostream>
using namespace std;
int main(){
int x,count=0;
cin>>x;
int num;
bool pd;
while(cin>>num){
for(int i=0;i<num;i++){
cout<<pd;
count++;
if(count==x){
cout<<endl;
count=0;
}
}
pd=!pd;
}
return 0;
}
其实就是上一题倒着来一遍(小声bb)?
这道题的关键思路在于字符串的连接,第一次提交的时候只通过了五分之一的样例,然后发现之所以没全过的原因是题目要求首先判断的是0,接下来便是1,交替判断。而我的思路是让前后两个字符判断是否相等,就意味着0和1都可以作为第一个数字进行统计
先上第一次的错误代码
#include<iostream>
#include<string>
using namespace std;
int main(){
int count=1;
string str[201],strr;
cin>>str[0];
strr=str[0];
int x=str[0].length();
for(int i=1;i<x;i++){
cin>>str[i];
strr+=str[i];
}
cout<<x<<" ";
for(int i=0;i<x*x;i++){
if(strr[i]==strr[i+1]){ //这里直接进行判断了...当然这是不可取的
count++;
}
else{
cout<<count<<" ";
count=1;
}
}
return 0;
}
下面是正确的代码
#include<iostream>
#include<string>
using namespace std;
int main(){
int count=0;
char pd='0';
string str[201],strr;
cin>>str[0];
strr=str[0];
int x=str[0].length();
for(int i=1;i<x;i++){
cin>>str[i];
strr+=str[i];
}
cout<<x<<" ";
for(int i=0;i<=x*x;i++){
if(strr[i]==pd){ //dangdangdang,先和0进行判断是否相等
count++;
}
else{
pd=strr[i]; //把0变为1
cout<<count<<" ";
count=1;
}
}
return 0;
}