演算法競賽入門經典(第2版)第3章 陣列和字串
習題3-5 謎題 uva227
感悟。1、直接看英文原題的輸入輸出樣例,在題意理解要求上省了許多力。
2、程式難在輸入輸出處理,難在字元讀取,策略:寫一段**,跟蹤除錯一段,正確之後才往下寫,其中發現不少錯誤,一氣呵成,寫出無誤的**,真的是很難很難啊。
3、對getchar()有更深入的理解。
4、平常心提交**,沒有奢望一次ac,看到的結果是
presentation error
還好核心部分沒問題,只要修改輸出格式即可。
5、直接閱讀**原文,限於英文水平有限,進一步參考對**輸出格式進行修改,提交ac.
6、對separate output from different puzzle records by one blank line.有更深的理解,輸出記錄間被空行隔開,但第一條輸出記錄之前,最後一條輸出記錄之後,無空行。
7、用了結構體。
8、引入struct pos opos[4]=,,,};//移動的資料
附上**
環境dev-cpp4.9.9.2
#include
char a[10][10];
char o[10000+10];
struct pos;
struct pos opos[4]=,,,};//移動的資料
struct pos mypos,tpos,tmppos;
int order(char c)
}int main()
a[rcount][ccount]=c;
if(c==' ')
ccount++;
c=getchar();
}ocount=0;
while((c=getchar())!='0')
c=getchar();//吞掉'0'之後的'\n'
kase++;
if(kase>1)
printf("\n");
printf("puzzle #%d:\n",kase);
flag=1;
for(i=0;i4||tpos.c<0||tpos.c>4)else
}if(flag)else
}printf("\n");}}
}return 0;
}
習題3 5 謎題 UVa 227
puzzle uva 227 這道題目主要複雜度在輸入和輸出的處理,主要是輸入的網格矩陣有空格,所以要用getchar 來進行輸入,但是輸入的時候又要考慮換行和最後一組輸入的情況,輸入指令序列也是同樣的情況,可能有空白字元。模擬的時候注意陣列邊界即可。include include intmain ...
UVA227解題報告
因為網格中存在空格所以用gets錄入,首先錄入一行資料,如果第乙個字元為 z 則break退出迴圈 其次是對指令的接受與處理,接受指令可以用getchar 遇到換行符跳過。處理也很簡單,在接受指令之前我們需要乙個定位操作,找到空格所在的位置,然後根據指令確定要移動到的座標,用swap函式交換資料,更...
習題3 5 謎題
題目 有乙個5 5的網格,其中恰好有乙個格仔是空的,其他格仔各有乙個字母。一共有4種指 令 a,b,l,r,分別表示把空格上 下 左 右的相鄰字母移到空格中。輸入初始網格和指 令序列 以數字0結束 輸出指令執行完畢後的網格。如果有非法指令,應輸出 this puzzle has no final c...