-2

今天我在一次编程比赛中遇到了一个恼人的问题。我在第一轮中表现出色,但在第二轮中,下面的问题让我陷入了陷阱。

Question: Input N = 4
          Output:
                 1
                 0 1
                 1 0 1
                 0 1 0 1

我尝试了很多东西,但每次都失败了。

除了这个愚蠢的错误解决方案之外,我尝试了许多花哨的东西并最终失败了。我的 C 知识的哪一部分薄弱?

如果给你这个问题,你会怎么解决?

4

5 回答 5

4

对我来说似乎很微不足道:

int main(int argc, char *argv[])
{
    int n = strtol(argv[1], NULL, 10);
    for (int i = 0; i < n; i++) {
            for (int j = 0; j <= i; j++) {
                    printf("%d ", i % 2 ? j % 2 : 1 - j % 2);
            }
            printf("\n");
    }

    return 0;
}
于 2013-05-27T12:44:21.587 回答
2

你惊慌失措。由于您打印的值取决于行和列,因此请同时使用。并更好地命名您的变量。

void printBinaryTriangle(const unsigned int rows) {
    for(int row = 1; row <= rows; ++row) {
        for (int column = 0; column < row; ++column) {
            printf("%d ", (row + column) % 2);
        }
        putchar('\n');
    }
}
于 2013-05-27T12:48:23.137 回答
1

这为我完成了工作。

int i,j,flag;
int num=4;

flag=1;
for(i=0;i<num;i++)
{
    for(j=0;j<i+1;j++)
    {
            printf("%d",(j+flag)%2);
    }
    if(flag)
    {
            flag=0;
    }
    else
    {
            flag=1;
    }
    printf("\n");

 }
于 2013-05-27T12:51:38.983 回答
1

这是你想要的吗?

for(int k = 0; k < N; k++){
    for(int i = 0; i < k+1; i++){
        if(i % 2 == k % 2)
           printf("1 ");
        else
           printf("0 ");
    };
    printf("\n");
}
于 2013-05-27T12:41:56.853 回答
-2
num = 12
new_string = ''
new_list = ''
while num:
    for i in range(1,num+1):
        strings_of_ones = new_string+ '1' * i
        new_list = list(strings_of_ones)
        for j in range(1,len(new_list),2):
            new_list[j]='0'
        print(' '.join(new_list[::-1]))
        num -= 1
于 2021-09-08T10:01:24.493 回答