比赛中的艰难循环

时间:2013-05-27 12:38:30

标签: c loops

今天我在编码比赛中遇到了一个恼人的问题。我通过第一轮比赛,但在第二轮比赛中,下面的问题让我陷入困境。

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

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

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

如果你被问到这个问题,你会如何解决?

4 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分: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');
    }
}

答案 2 :(得分: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");
}

答案 3 :(得分: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");

 }