這個題目把棋子的座標依次存進陣列裡,然後再分別用兩個陣列記錄行和列有哪些已經被占用了,之後便從第乙個棋子開始深搜即可,深搜函式帶兩個引數p,
count,p表示從當前第p個棋子開始往下搜,count表示已經放了count個棋子。
把滿足條件的位置一次儲存起來。再利用回朔搜尋,很好;;
#include"stdio.h"
#include"string.h"
char map[100];
int qx[100],qy[100];
int visx[100],visy[100];
int n,m,cnt,k;
void dfs(int p,int count)
for(i=p;i
#include"stdio.h"
#include"string.h"
char map[100][100];
int n,m,cnt,row[100];
void bfs(int x,int y)//搜尋第x行,已經放好了y顆棋子。。
if(x>n)
return ;
for(i=1;i<=n;i++) }
bfs(x+1,y);
}int main()
return 0;
}
這個方法和hdu1045的方法一樣。。
#include"stdio.h"
#include"string.h"
char map[100][100];
int row[100],hang[100];
int n,m,cnt;
void dfs(int k,int count)//第k個點,在這個點可以放得總數。。
if(k>=n*n)
return ;
x=k/n,y=k%n;
if(map[x][y]=='#'&&!row[y]&&!hang[x])
dfs(k+1,count);//和上面那個方法放的位置不同。。
}int main()
return 0;
}
POJ 1321搜尋簡單題
在乙個給定形狀的棋盤 形狀可能是不規則的 上面擺放棋子,棋子沒有區別。要求擺放時任意的兩個棋子不能放在棋盤中的同一行或者同一列,請程式設計求解對於給定形狀和大小的棋盤,擺放k個棋子的所有可行的擺放方案c。input 輸入含有多組測試資料。每組資料的第一行是兩個正整數,n k,用乙個空格隔開,表示了將...
POJ 1321 棋盤問題 搜尋
棋盤問題 time limit 1000ms memory limit 10000k total submissions 19843 accepted 9888 description 在乙個給定形狀的棋盤 形狀可能是不規則的 上面擺放棋子,棋子沒有區別。要求擺放時任意的兩個棋子不能放在棋盤中的同一...
POJ 1321 棋盤問題 搜尋
time limit 1000ms memory limit 10000k total submissions 21684 accepted 10775 description 在乙個給定形狀的棋盤 形狀可能是不規則的 上面擺放棋子,棋子沒有區別。要求擺放時任意的兩個棋子不能放在棋盤中的同一行或者同...