看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《maerdimer (void)》之銘言: : LLLLLLLLL : LLWWLLWLL : LWWLLLLLL : LWWWLWWLL : LLLWWWLLL : LLLLLLLLL : LLLWWLLWL : LLWLWLLLL : LLLLLLLLL : 3 2 : 7 5 你的程式太複雜了,不由之改寫,另寫一個簡單的。 不管第一列的數字,讀入的程式可寫成, string line ; ifstream infile("datafile") ; istringstream istr ; int i , j , m , n ; m = 0 ; while ( getline(infile,line) ) { istr.str(line) ; if ( istr >> i >> j ) { ..... // 讀取最後兩列 } else { istr.clear() ; for ( n = 0 ; n < line.size() ; ++n ) { if ( line[n] == 'W' ) { .... ; // 水域座標 (m+1,n+1) } } ++m ; } istr.clear() ; } 其他的就自行解決。利用程式處理整個區域,可得到: 0 0 0 0 0 0 0 0 0 0 0 12 12 0 0 1 0 0 0 12 12 0 0 0 0 0 0 0 12 12 12 0 12 12 0 0 0 0 0 12 12 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 4 0 0 1 0 0 0 4 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 ※ 編輯: pziyout 來自: 140.115.25.21 (04/29 18:04)
maerdimer:我的最終版本長這樣 http://codepad.org/shlrvPNU 04/29 21:29