poj 1321 棋盘问题(DFS,回溯)

题目链接:http://poj.org/problem?id=1321

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

using namespace std;

#define INF 0x3f3f3f3f

typedef long long ll;

int n,k;
int ans;
char map[10][10];
int vis[10][10];
int r[10],c[10];

bool check(int i,int j)
{
    if(!r[i]&&!c[j])
        return true;
    else
        return false;
}

void Dfs(int step,int ii) //当前已经放了step个棋子,上一次放置的位置为第ii行
{
    if(step==k){
        ans++;
        return ;
    }
    for(int i=ii+1;i>n>>k&&!(n==-1&&k==-1)){
        ans=0;
        memset(vis,0,sizeof vis);
        memset(r,0,sizeof r);
        memset(c,0,sizeof c);

        for(int i=0;i>map[i][j];
            }
        }
        Dfs(0,-1);
        cout<


你可能感兴趣的:(搜索,DFS)