求救!!救人一命,胜造七级浮屠!!!

P1319 压缩技术

xsl120505 @ 2018-11-28 18:44:46

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,x[100000],n1[100000],p=0;
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>x[i]>>n1[i];
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=x[i];j++)
        {
            cout<<"0";
            if(p==n)
            {
                p=0;
                cout<<endl;
                p++;
            }
        }

        for(int j=1;j<=n1[i];j++)
        {
            cout<<"1";
            if(p==n)
            {
                p=0;
                cout<<endl;
                p++;
            }   
        }
    }
    return 0;
}

by 斯蒂芬王 @ 2018-11-28 18:55:10

无能为力


by woshishei @ 2018-11-28 18:55:28

你在程序运行中的p始终是0,所以不能判定出p==n


by ZERORUSH @ 2018-11-28 18:56:12

你确定你的p++放对地方了吗


by woshishei @ 2018-11-28 18:56:19

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,x[100000],n1[100000],p=0;
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>x[i]>>n1[i];
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=x[i];j++)
        {
            cout<<"0";
            p++;//你忘了写
            if(p==n)
            {
                p=0;
                cout<<endl;
                p++;
            }
        }

        for(int j=1;j<=n1[i];j++)
        {
            cout<<"1";
            p++;//你忘了写
            if(p==n)
            {
                p=0;
                cout<<endl;
                p++;
            }   
        }
    }
    return 0;
}

by woshishei @ 2018-11-28 18:57:04

把if里的p++去掉


by ZERORUSH @ 2018-11-28 19:19:05

@woshishei 大佬


by woshishei @ 2018-11-29 20:53:44

@寒鸦少年 我是最菜的蒟蒻QwQ


by xsl120505 @ 2018-11-30 21:54:55

@woshishei dalao:还是WA了两个点?


by woshishei @ 2018-11-30 23:06:33

@xsl120505

注意这里:

cin>>n;
for(int i=1;i<=n;i++)
    cin>>x[i]>>n1[i];

题目中输入的个数未知,不一定是2 \times n个。

cin>>n;
int sum=0,m1=0,m2=0,cnt=0;//sum表示输入数之和;m1表示x的个数;m2表示n1的个数;cnt表示目前正在输入第几个数
do{
    int tmp;
    cin>>tmp;
    cnt++;
    if(cnt%2!=0)x[++m1]=tmp;//x的个数加一
    else n1[++m2]=tmp;//n1的个数加一
    sum+=tmp;
}while(sum<n*n);//题目保证总和=n*n

因为m1只可能等于m2或m2+1,所以先循环到m2,如果m1>m2的话在加一次就行

for(int i=1;i<=m2;i++)
{
    for(int j=1;j<=x[i];j++)
        //do something for 0
    for(int j=1;j<=n1[i];j++)
        //do something for 1
}
if(m1>m2)
    for(int i=1;i<=x[i];i++)
        //do something for 0

by ZERORUSH @ 2018-12-01 19:24:13

@woshishei 怎么可能。。。还是我比较菜


|