棋盘问题 POJ - 1321
题目大意:
给出两个数据n m
给出一个n*n的棋盘 棋盘上 # 的位置可以放棋子
要求所放棋子不能在同一行或者同一列,要求在棋盘上放置m个棋子
求出共有多少种放置方法
分析:
DFS
遍历整个棋盘 当遇到 # 时,转入下一行,并在此之前,把这一列标记,然后在函数调用完之后,把标记撤回。
AC代码:
#include <iostream>
#include <cstring>
#define Max_Size 10
using namespace std;
char map[Max_Size][Max_Size];
bool vis[Max_Size];
int cnt,n;
int C=0;
void DFS(int x,int K)