zoukankan      html  css  js  c++  java
  • poj 1321 棋盘问题(dfs)

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

    没什么难度,比较水。。。

    View Code
     1 #include <iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #define pan(a,n) (a>=1&&a<=n)
     5 using namespace std;
     6 int n,k;
     7 char str[10][10];
     8 int dire[4][2]={{1,0},{0,1}};
     9 int xvis[10],yvis[10];
    10 int num;
    11 void dfs(int ax,int ay,int k)
    12 {
    13     if(k==0)
    14     {
    15         num++;
    16         return ;
    17     }
    18     int i,j;
    19     for(i=ax+1;i<=n;i++)
    20     {
    21         for(j=1;j<=n;j++)
    22         {
    23             if(str[i][j]=='#')
    24             {
    25                 if(xvis[i]==0&&yvis[j]==0)
    26                 {
    27                     xvis[i]=1;
    28                     yvis[j]=1;
    29                     k--;
    30                     dfs(i,j,k);
    31                     k++;
    32                     xvis[i]=0;
    33                     yvis[j]=0;
    34                 }
    35             }
    36         }
    37     }
    38 }
    39 int main()
    40 {
    41     int i,j;
    42     while(scanf("%d%d",&n,&k)!=EOF)
    43     {
    44         if(n==-1&&k==-1)
    45         break;
    46         num=0;
    47         memset(xvis,0,sizeof(xvis));
    48         memset(yvis,0,sizeof(yvis));
    49         for(i=1;i<=n;i++)
    50         {
    51             for(j=1;j<=n;j++)
    52             {
    53                 cin>>str[i][j];
    54             }
    55         }
    56         for(i=1;i<=n;i++)
    57         {
    58             for(j=1;j<=n;j++)
    59             {
    60                 if(str[i][j]=='#')
    61                 {
    62                     xvis[i]=1;
    63                     yvis[j]=1;
    64                     k--;
    65                     dfs(i,j,k);
    66                     k++;
    67                     xvis[i]=0;
    68                     yvis[j]=0;
    69                 }
    70             }
    71         }
    72         cout<<num<<endl;
    73     }
    74     return 0;
    75 }
  • 相关阅读:
    [树状数组]JZOJ 4658 小Z调顺序
    [差分数组]JZOJ 3187 的士
    [BFS]JZOJ 4671 World Tour
    [BFS]JZOJ 4672 Graph Coloring
    [数学]JZOJ 4673 LCS again
    shell:正则表达式和文本处理器
    开发脚本自动部署及监控
    Linux中的重启命令
    nginx和nfs
    网络相关配置
  • 原文地址:https://www.cnblogs.com/wanglin2011/p/2877762.html
Copyright © 2011-2022 走看看