poj 幾道簡單的搜尋題 (一)

2022-08-12 13:42:15 字數 1060 閱讀 3189

題目:poj 2488 a knight's journey

題意:給乙個m*n的棋盤,馬走日,給出一條字典序最小的馬的路線來走完整個棋盤?

分析:如果能走完棋盤,那麼從(1,1)點dfs即可,因為他能走完整個棋盤嘛,總有一步會經過(1,1),所以從(1,1)出發就能到其他所有點。

為了保證字典序,在列舉方向時順序要保證x軸優先,然後y軸。

#include#include#include#include#includeusing namespace std;

const int n=33;

typedef pairpii;

vectorans;

int dx[2]=,,,,,,,};

int n,m;

bool vis[n][n];

bool dfs(int x,int y,int step)

return 0;

}int main()

,,,};

int ans=inf;

void dfs(int x,int y,int step)

for(int i=row;i

題目:poj 2251

題意:給出乙個三維的圖,求s到e的最短路

分析:裸的bfs

#include#include#includeusing namespace std;

#define mp make_pair

const int n=33;

typedef pairpii;

typedef pairstate; //步數,層,行,列,可能寫個struct清晰點qaq

char g[n][n][n];

bool vis[n][n][n];

int c,l,r,sl,sc,sr; //層數,行數,列數,開始的層行列

int d[3]=,,,,,};

int bfs()

}return -1;

}int main()

{ while(~scanf("%d%d%d",&l,&r,&c)&&(l+r+c)){

for(int l=0;l

poj 幾道簡單的dp題

題意 求使數列程先遞增後遞減的形式需要去掉的數字個數。當然也可以直接遞減或者只遞減不遞增。分析 用最長遞增子串行的方法求,然後列舉兩個起點的位置即可。include include include using namespace std const int inf 1e8 const int n 1...

poj 幾道簡單的二分題

題意 有n個數,劃分成m塊,和最大的一塊最小是多少?分析 最大值最小問題,二分答案。include using namespace std typedef long long ll const int n 1e5 9 int a n n,m bool ok int x else if k 0 ret...

POJ 1321搜尋簡單題

在乙個給定形狀的棋盤 形狀可能是不規則的 上面擺放棋子,棋子沒有區別。要求擺放時任意的兩個棋子不能放在棋盤中的同一行或者同一列,請程式設計求解對於給定形狀和大小的棋盤,擺放k個棋子的所有可行的擺放方案c。input 輸入含有多組測試資料。每組資料的第一行是兩個正整數,n k,用乙個空格隔開,表示了將...