求救!!!

P1319 压缩技术

甘蔗脆又甜 @ 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;
}

|