一開始想的時候標記想錯了,其實標記只要一組對列的標記就夠,這樣在行往下的過程中,行每行確定只放乙個了,與一般dfs還有一點不同的是,這個有可能出現棋子數不足的情況,這就要求在dfs過程中,需要分放和不放兩種,在放的部分中**再體現出行的標記變換
還有個有點陰的地方是#是可以放的,迷宮題做多了都預設#是不行的了 - -
題目鏈結
#include #include using namespace std;
int n,k;
int vis[10];
char m[10][10];
int count = 0;
int total = 0;
void dfs(int x)
if(x>=n)
for(int j=0;jdfs(x+1);// 因為不等額 在這一行直接不放
}int main(void)
for(int i=0;idfs(0);
printf("%d\n",count);
} }
百練1321 棋盤問題題解
總時間限制 1000ms 記憶體限制 65536kb 描述 在乙個給定形狀的棋盤 形狀可能是不規則的 上面擺放棋子,棋子沒有區別。要求擺放時任意的兩個棋子不能放在棋盤中的同一行或者同一列,請程式設計求解對於給定形狀和大小的棋盤,擺放k個棋子的所有可行的擺放方案c。輸入輸入含有多組測試資料。每組資料的...
百煉 1321 棋盤問題(dfs)
描述在乙個給定形狀的棋盤 形狀可能是不規則的 上面擺放棋子,棋子沒有區別。要求擺放時任意的兩個棋子不能放在棋盤中的同一行或者同一列,請程式設計求解對於給定形狀和大小的棋盤,擺放k個棋子的所有可行的擺放方案c。輸入輸入含有多組測試資料。每組資料的第一行是兩個正整數,n k,用乙個空格隔開,表示了將在乙...
棋盤問題 DFS
c 棋盤問題 time limit 1000msmemory limit 10000kb64bit io format i64d i64u submit status practice poj 1321 description 在乙個給定形狀的棋盤 形狀可能是不規則的 上面擺放棋子,棋子沒有區別。要...