習題3 5 謎題 UVa 227

2021-10-06 09:36:21 字數 984 閱讀 5975

puzzle - uva 227

這道題目主要複雜度在輸入和輸出的處理,主要是輸入的網格矩陣有空格,所以要用getchar()來進行輸入,但是輸入的時候又要考慮換行和最後一組輸入的情況,輸入指令序列也是同樣的情況,可能有空白字元。模擬的時候注意陣列邊界即可。

#include

#include

intmain()

if(i==

0&ch==

'z')

if(ch==

' ')

p[i/5]

[i%5

]=ch;}if

(q)break

; ilen=0;

while

(true

) ins[ilen]

='\0'

; q=

true

;//是否有解標誌

for(

int i=

0;i)else

}else

if(ins[i]

=='r'

)else

}else

if(ins[i]

=='a'

)else

}else

if(ins[i]

=='b'

)else}}

if(kase==1)

printf

("puzzle #%d:\n"

,kase++);

else

printf

("\npuzzle #%d:\n"

,kase++);

if(!q)printf

("this puzzle has no final configuration.\n");

else

printf

("%c\n"

,p[i][4

]);}

}}return0;

}

習題3 5 謎題 UVa227

演算法競賽入門經典 第2版 第3章 陣列和字串 習題3 5 謎題 uva227 感悟。1 直接看英文原題的輸入輸出樣例,在題意理解要求上省了許多力。2 程式難在輸入輸出處理,難在字元讀取,策略 寫一段 跟蹤除錯一段,正確之後才往下寫,其中發現不少錯誤,一氣呵成,寫出無誤的 真的是很難很難啊。3 對g...

UVA227解題報告

因為網格中存在空格所以用gets錄入,首先錄入一行資料,如果第乙個字元為 z 則break退出迴圈 其次是對指令的接受與處理,接受指令可以用getchar 遇到換行符跳過。處理也很簡單,在接受指令之前我們需要乙個定位操作,找到空格所在的位置,然後根據指令確定要移動到的座標,用swap函式交換資料,更...

習題3 5 謎題

題目 有乙個5 5的網格,其中恰好有乙個格仔是空的,其他格仔各有乙個字母。一共有4種指 令 a,b,l,r,分別表示把空格上 下 左 右的相鄰字母移到空格中。輸入初始網格和指 令序列 以數字0結束 輸出指令執行完畢後的網格。如果有非法指令,應輸出 this puzzle has no final c...