zoukankan      html  css  js  c++  java
  • POJ 1321 棋盘问题 DFS搜索

    简单搜索 练习一下回溯

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <sstream>
     5 #include <string>
     6 #include <algorithm>
     7 #include <list>
     8 #include <map>
     9 #include <vector>
    10 #include <queue>
    11 #include <stack>
    12 #include <cmath>
    13 #include <cstdlib>
    14 using namespace std;
    15 int n,k;
    16 int ans;
    17 char s[10][10];
    18 int usex[10],usey[10];
    19 bool ok(int x,int y){
    20     if(x<0||x>=n||y<0||y>=n)
    21         return 0;
    22     if(s[x][y]=='.'){
    23         return 0;
    24     }
    25     if(usex[x]==1||usey[y]==1)
    26         return 0;
    27     return 1;
    28 }
    29 void dfs(int x,int y){
    30     if(y==k){
    31         ans++;
    32         return ;
    33     }
    34     if(x>n){
    35         return ;
    36     }
    37     for(int i=0;i<n;i++){
    38         if(ok(x,i)){
    39             usey[i]=1;
    40             usex[x]=1;
    41             dfs(x+1,y+1);
    42             usey[i]=0;
    43             usex[x]=0;
    44         }
    45     }
    46     dfs(x+1,y);
    47 }
    48 int main(){
    49     while(~scanf("%d%d",&n,&k),n!=-1||k!=-1){
    50         ans=0;
    51         memset(usey,0,sizeof(usey));
    52         memset(usex,0,sizeof(usex));
    53         for(int i=0;i<n;i++){
    54             scanf("%s",s[i]);
    55         }
    56         dfs(0,0);
    57         printf("%d
    ",ans);
    58     }
    59     return 0;
    60 }
    View Code
  • 相关阅读:
    清空
    从一个例子看现代C++的威力
    C++11实现一个自动注册的工厂
    REST RPC架构思想
    thinking in object pool
    worksteal thread pool
    check member function
    C# string 常用功能的方法扩展
    C#设计模式总结
    JAVA过滤器和拦截器的区别
  • 原文地址:https://www.cnblogs.com/ITUPC/p/5361292.html
Copyright © 2011-2022 走看看