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...