甘蔗脆又甜 @ 2020-11-26 11:04:55
只过了两个测试点,请求大佬救援!!!
#include <bits/stdc++.h>
using namespace std;
int main(){
int n;
cin >> n;
int flag = 1; //判断输出0||1
int tmp = 0; //临时存储输出0||1的个数
for(int y = 0;y < n;y++){ //循环模拟数组
for(int x = 0;x < n;x++){ //循环
if(tmp == 0){ //若tmp为0,则现在已经把tmp个0||1输出完成,该从0 -> 1 || 1 -> 0了
cin >> tmp; //读入输出数量
flag = 1 - flag; //01转换
}
if(tmp != 0){ //若tmp还未为0,说明还需继续输出数字
cout << flag;
tmp--; //tmp--
}
}
cout << endl; //输出完n个数字就该换行了
}
return 0;
}
by 无秒 @ 2020-11-26 11:49:52
原因是假如是输入的tmp是0的话它就不会输出任何数,导致输入变少,所以把if改成while就行了。
你的代码修改如下(后面的if没用删掉)
#include <bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
int flag = 1;
int tmp = 0;
for(int y=0;y<n;y++){
for(int x=0;x<n;x++){
while(tmp==0){
cin>>tmp;
flag=1-flag;
}
cout<<flag;
tmp--;
}
cout<<endl;
}
return 0;
}