題目: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,用乙個空格隔開,表示了將...