習題3 5 謎題 UVa227

2021-07-15 20:19:28 字數 1174 閱讀 5423

演算法競賽入門經典(第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...