今天我在編碼比賽中遇到了一個令人惱火的問題。我通過第一輪奶油,但在第二輪,下面的問題讓我陷入困境。艱難的比賽循環
Question: Input N = 4
Output:
1
0 1
1 0 1
0 1 0 1
我嘗試了很多事情,但每次失敗。
除了這個愚蠢的錯誤解決方案,我嘗試了很多花哨的東西,最終失敗了。 我的C知識的哪些部分很薄弱?
如果你有這個問題,你會如何解決它?
今天我在編碼比賽中遇到了一個令人惱火的問題。我通過第一輪奶油,但在第二輪,下面的問題讓我陷入困境。艱難的比賽循環
Question: Input N = 4
Output:
1
0 1
1 0 1
0 1 0 1
我嘗試了很多事情,但每次失敗。
除了這個愚蠢的錯誤解決方案,我嘗試了很多花哨的東西,最終失敗了。 我的C知識的哪些部分很薄弱?
如果你有這個問題,你會如何解決它?
這爲我做了這份工作。
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");
}
謝謝T Vignesh Prabhu –
似乎很平凡的我:
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;
}
剛纔你提出了這個解決方案,我的意思是當你看到代碼後? –
@SwaroopNagendra當然,還有什麼時候呢? – 2013-05-27 12:49:07
非常感謝,我猜它的實踐。現在我回到了KN King。 –
你驚慌失措。由於您打印的值取決於行和列,請同時使用這兩個值。並更好地爲你的變量命名。
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');
}
}
非常感謝。我真的很感激它 –
我不是隻寫一個'main'方法,因爲你將來可能需要從不同來源獲得行數,而不是修復'4'。這是一個比賽問題,但你仍然可以考慮未來的使用。當您將編程作爲工作的一部分時,您需要記住需求會發生變化。 –
您的while循環條件中有N個,但是您在循環中使用了i。這對我來說毫無意義。 –
你可能想重新發布你的代碼,因爲現在看起來你沒有試過任何東西,而是在請求人們爲你解決問題。 –
共同爲什麼你會投票呢!我誠實地問自己的弱點,並強調C的哪一部分能夠幫助我解決像這樣的問題。 –