萌新求助,求大佬指出逻辑问题

P1319 压缩技术

leiteorz @ 2021-08-21 20:27:27

#include <stdio.h>
#include <stdlib.h>
    int a[100001];
int main()
{
    int n;
    scanf("%d",&n);
    int i;//控制循环次数
    int j;//控制打印
    int s=0;
    int b=1;//控制换行
    int k=0;//压缩码有多少数字
    for(i=0;;i++,k++)//录入压缩码
    {
        scanf("%d",&a[i]);
        s+=a[i];
        if(s==n*n)//控制停止
        {
            break;
        }
    }
    for(i=0;i<=k;i++)//控制压缩码是第几个
    {
        for(j=0;j<a[i];j+=a[i])//控制打印
        {

            if(i%2==0)
            {
                printf("0");
            }
            else
            {
                printf("1");
            }
            b++;
            if(b%n==0)//控制换行
            {
                printf("\n");
            }

        }
    }
    return 0;
}

by _Cppsteve_ @ 2021-08-21 20:51:45

@leiteorz

    if(s==n*n)//控制停止
        {
            break;
        }

这一段好像有一点点古怪。。

应该是i==n*n,不是吗???


by GODking @ 2021-08-21 20:53:39

for(j=0;j<a[i];j+=a[i])//控制打印

j+=a[i]改为j++

b++
if(b%n==0)//控制换行
            {
                printf("\n");
            }

改为

if(b==n)//控制换行
            {
                b-=n;
                printf("\n");
            }
            b++;

by GODking @ 2021-08-21 20:55:05

@Cppsteve 这里的s是总和的意思↓

s+=a[i];

by _Cppsteve_ @ 2021-08-21 20:57:47

@leiteorz

提供AC记录:https://www.luogu.com.cn/record/54970238

如果无法查看源代码请私信。

私信:\color{#5EB95E}{\textsf{Cppsteve}}


by _Cppsteve_ @ 2021-08-21 20:58:26

@白揍流星 好的,谢谢。。


by leiteorz @ 2021-08-21 21:14:20

@白揍流星 谢谢大佬qwq,写题的时候比较不仔细


|