2013-10-08 69 views
0

我想知道是否存在要產生一組在這些C 4個數字++的有效方式:如何生成在C++奇怪圖形號

(0,2,1,0) ; // A 
(1,2,2,0) ; // B 
(2,2,3,0) ; // C 
(4,1,0,3) ; // D 
(4,2,5,0) ; // E 
(5,1,1,3) ; // F 
(5,2,6,0) ; // G 
(6,1,2,3) ; // H 
(6,2,7,0) ; // I 
(7,1,3,3) ; // J 
(8,1,4,3) ; // K 
(8,2,9,0) ; // L 
(9,1,5,3) ; // M 
(9,2,10,0) ; // N 
(10,1,6,3) ; // O 
(10,2,11,0) ; // P 
(11,1,7,3) ; // Q 
(12,1,8,3) ; // R 
(12,2,13,0) ; // S 
(13,1,9,3) ; // T 
(13,2,14,0) ; // U 
(14,1,10,3) ; // V 
(14,2,15,0) ; // W 
(15,1,11,3) ; // X 
(16,1,12,3) ; // Y 
(16,2,17,0) ; // Z 
(17,1,13,3) ; // A1 
(17,2,18,0) ; // B1 
(18,1,14,3) ; // C1 
(18,2,19,0) ; // D1 
(19,1,15,3) ; // E1 

" 16 Y 12 R 8 K 4 D 0"  
" Z  S  L  E  A"  
" 17 A1 13 T 9 M 5 F 1"  
" B1  U  N  G  B"  
" 18 C1 14 V 10 O 6 H 2"  
" D1  W  P  I  C"  
" 19 E1 15 X 11 Q 7 J 3"  

考慮在上述圖中的數字爲正方形片和字母A到E1作爲相鄰方形邊緣的交點。在上面的列表中,每個集合(A,B,C ...)具有4個數字。位置1和3處的數字代表方塊數量。位置2和4處的數字表示方形邊緣的類型(頂部 - 0,右側 - 1,底部 - 2,左側 - 3)。第一組數字表示交點A.如上圖所示,它是平方數0(底邊-2)和平方數1(頂邊-0)之間的交點。因此,A是0,2 ,1,0。

同樣,B是方塊1(底邊-2)與方塊2(頂邊-0)的交點。因此B是(1,2,2,0)。類似地,C是(2,2,3,0) - 方塊2(底部邊緣-2)和方塊3(頂部邊緣 - 0)的交叉點

問題是如何在C++中生成這些數字

+0

只要找出公式或算法,就可以輕鬆實現。一旦你這樣做,SO會很樂意幫助你。 – mvp

+0

@mvp:好的,我會更新,當我能弄明白。 – user2725924

+0

這非常簡單。你懂C++中的'for循環嗎?什麼部分給你帶來麻煩? – Beta

回答

1

訣竅是由行和列來迭代陣列之上:

4 3 2 1 0 
--------------- 
16 12 8 4 0 | 0 
17 13 9 5 1 | 1 
18 14 10 6 2 | 2 
19 15 11 7 3 | 3 

例如,第1列和第2行是指正方形6.

要以正確的順序這樣迭代的平方我們使用這樣的嵌套循環:

int num_cols = 5; 
int num_rows = 4; 
for(int col=0; col<num_cols ; ++col) 
{ 
    for(int row=0; row<num_rows ; ++row) 
    { 
    cout << "this is column " << col << ", row " << row << endl; 
    } 
} 

現在我們只需要弄清楚在特定位置要做什麼。廣場的數字是多少?你應該很容易看到它是col*num_rows + row。並且在(如果有的話)之下的方塊的號碼是col*num_rows + row + 1,且右邊的的號碼(如果有的話)是(col-1)*num_rows + row。因此,舉例來說,如果col爲1和row是2,邊緣報告是

(6,1,2,3) 
(6,2,7,0) 

是否已足夠?

+0

謝謝。這已經足夠了。我會從現在開始謹慎。 – user2725924