※ 引述《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)