2014-09-18 245 views
0

我正在研究班級中的八個皇后/國際象棋棋盤問題。對於我的代碼,我使用一維數組,即q [c](c是列)來存儲由女王組成的行的值。例如,q [1] = 3意味着在第2列(基於0的陣列)中,在第4行中存在皇后。使用1d陣列打印2d陣列

原始問題使用2d數組,因此b [r] [c] = 0,或1,1是女王,其餘爲0。該程序使用ok函數來測試它對所有先前放置的皇后所放置的每個皇后,並在最後打印結果。

The print function was 
for(int j=0; j<c;j++) 
    cout<<endl; 
    for(int i=0; i<c;i++) 
     cout<< b[i][j]; 

打印了92個解板,看上去像這樣

10000000 
00001000 
01000000 
00010000 
00000010 
00100000 
00000100 
00000001 

現在對於我的問題:我不能爲我的生活弄清楚如何獲得上述一維數組b [C ]打印看起來與此相同的電路板。我是一名初學者科比學生,但我仍然認爲這將更加微不足道。

我不是在尋找答案,更多的是提示我在正確的方向,或者第一行代碼。幫助非常感謝。感謝

+0

提示:天真的方式只是:從您的一維數組中生成二維數組,然後以相同的方式打印它。如果你經歷這個練習,你可能會碰到一些更好的想法。 – 2014-09-18 17:22:02

+0

在你上一次爲你可以檢查我是否等於b [j]並打印0或1 – 2014-09-18 17:27:29

回答

0

喜歡的東西....

for (int y = 0; y<8; y++) { 
    int val = b[y]; 
    for (int x=0; x<8; x++) { 
     x==val ? printf("1") : printf("0") ; 
    } 
    printf("\n"); 
} 

for (int y = 0; y<8; y++) { 
     char[9] line; 
     strcpy(line,"00000000"); 
     line[b[y]] = '1'; 
     printf("%s\n",line); 
    } 
+1

謝謝。我不知道我以前沒有看到它,但現在一切都變得有意義了!非常感謝 – user3566906 2014-09-19 18:56:55

+0

你可以選擇一個最喜歡的答案... – AnthonyLambert 2014-09-22 09:57:09

0

我想,如果你的陣列會告訴你,其中每個女王就是你'很容易找出解決方案。不幸的是,你必須逐行生成輸出,因爲文本終端就是這樣。這並不難之一:

  • 對於每一行:
    • 對於每一列:
      • 如果在(行,列)女王:打印1,否則打印0

你已經有了這個代碼。除了「如果有女王......」的部分。因此,讓我們解決問題並使之成爲一項功能:

bool is_there_a_queen(const int[8] board, int row, int col); 

您能否實施is_there_a_queen

+1

是的,我沒有在問題中包括那部分抱歉,但我有一個功能,做了所有的檢查(行,向下診斷,向上診斷),並使用回溯和轉到(這是我們的教授向我們展示的第一種方式)。這是非常有益的壽,謝謝 – user3566906 2014-09-19 18:55:51

+0

我記得那時候,當我們在課堂上做了八皇后問題時,我們做了沒有'goto'的事情......很高興我可以幫忙,很難。 – 5gon12eder 2014-09-19 19:20:21

0
#include <iostream> 

/* 
10000000 
00001000 
01000000 
00010000 
00000010 
00100000 
00000100 
00000001 
*/ 

int main() 
{ 
    int q[] = {0, 4, 1, 3, 6, 2, 5, 7}; 
    for (int i = 0; i < 8; ++i) 
    { 
     for (int j = 0; j < 8; ++j) 
     { 
     if (q[i] == j) 
     { 
      std::cout << 1; 
     } 
     else 
     { 
      std::cout << 0; 
     } 
     } 
     std::cout << std::endl; 
    } 
    return 0; 
} 
+0

非常感謝!多謝! – user3566906 2014-09-18 18:54:21

+0

感謝您的幫助,我已經利用了您的所有答案並找出答案,再次感謝 – user3566906 2014-09-18 18:54:46