2013-05-27 2 views
-2

Сегодня у меня возникает раздражающий вопрос в конкурсе кодирования. Я забрался в первый раунд, но во втором раунде меня загнал в ловушку следующий вопрос.Жесткая петля в конкурсе

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

Я пробовал много вещей, но каждый раз, когда я терпел неудачу.

Помимо этого глупого неправильного решения я пробовал много причудливых вещей и потерпел неудачу в конце. Какая часть моих знаний C слаба?

Если вам задали этот вопрос, как бы вы его решили?

+2

Ваше условие цикла while содержит N, но вы используете i в цикле. Это делает для меня нулевой смысл. –

+3

Возможно, вы захотите перекомпостировать свой код, так как теперь кажется, что вы ничего не пробовали и попросили людей решить эту проблему за вас. –

+1

Распространенный вопрос, почему вы голосуете! Я честно спрашиваю о своей слабости и о том, какая часть C поможет мне решить такие вопросы, как эти –

ответ

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"); 

} 
+0

Спасибо T Vignesh Prabhu –

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"); 
} 
+2

Как насчет новой строки и пробелов? – EnKrypt

+0

Нет, я так не думаю –

+0

Отредактировано, должно работать сейчас. – sashkello

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; 
} 
+0

Вы пришли с этим решением только сейчас, я имею в виду сразу после того, как вы видели код? –

+0

@SwaroopNagendra Конечно, когда еще? –

+0

Спасибо большое, я думаю, его ПРАКТИКА. Теперь я вернулся к KN King. –

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'); 
    } 
} 
+0

Большое спасибо. Я действительно ценю это –

+0

Я не просто написал метод 'main', потому что вам может понадобиться количество строк из разных источников в будущем, вместо того, чтобы фиксировать' 4'. Это проблема конкурса, но вы все равно можете думать о будущих целях. Когда вы программируете как часть своей работы, вам нужно помнить, что требования меняются. –

Смежные вопросы