UVA227解題報告

2021-08-08 10:21:00 字數 929 閱讀 4552

因為網格中存在空格所以用gets錄入,首先錄入一行資料,如果第乙個字元為'z'則break退出迴圈

其次是對指令的接受與處理,接受指令可以用getchar(),遇到換行符跳過。處理也很簡單,在接受指令之前我們需要乙個定位操作,找到空格所在的位置,然後根據指令確定要移動到的座標,用swap函式交換資料,更新空格位置

大體思路就這樣,附上ac**

#include#include#includeusing namespace std;

const int maxn = 5 + 10;

const char s = "ablr";

const int dir[4][2] = , ,, };

char g[maxn][maxn];

int main()

//進行移動

int ok = 1;

char c;

while((c = getchar()) && c != '0')

else k = strchr(s,c) - s;

int x = x0 + dir[k][0];

int y = y0 + dir[k][1];

if(x < 0 || x > 4 || y < 0 || y > 4)

else

}getchar();

//列印解

printf("puzzle #%d:\n",t);

if(ok)

for(int i=0;i<5;i++)

printf("%c %c %c %c %c\n",g[i][0],g[i][1],g[i][2],g[i][3],g[i][4]);

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

}return 0;

}

習題3 5 謎題 UVa227

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

習題3 5 謎題 UVa 227

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

紫書第三章課後習題 UVa227

題目 uva227 題解 題意很簡單,就是找出空著的那個格仔,對其進行相應的操作。思路也都很清晰,就是單純的模擬就可以,而操作只有四種,也都很簡單,就是簡單的交換就行,不過任何一次交換之後都要記得記錄空格的位置。不過在實現的過程中,還是碰到了不少問題,花了不少時間除錯 找bug。根源還是自己對字元的...