zoukankan      html  css  js  c++  java
  • A

     1 //纯dfs()
     2 
     3 #include <iostream>
     4 #include <algorithm>
     5 #include <string>
     6 #include <cstdio>
     7 #include <cstring>
     8 
     9 using namespace std;
    10 const int maxn = 10;
    11 char g[maxn][maxn];
    12 bool vis[maxn];        //列标记
    13 int n, k;
    14 int ans;
    15 
    16 void dfs(int nowx,int num){
    17     if (num == k){
    18         ans++;
    19         return;
    20     }
    21     
    22     if (nowx >= n)    //越界
    23         return;
    24 
    25     for (int i = 0; i < n; i++){
    26         if (g[nowx][i] == '#' && !vis[i]){
    27             vis[i] = 1;
    28             dfs(nowx + 1, num + 1);
    29             vis[i] = 0;
    30         }
    31     }
    32     dfs(nowx + 1, num);
    33     return;
    34 }
    35 
    36 int main(){
    37     while (~scanf("%d %d", &n, &k)){
    38         if (n == -1 && k == -1)
    39             break;
    40         ans = 0;
    41         memset(vis, 0, sizeof(vis));
    42         for (int i = 0; i < n; i++){
    43             scanf("%s", &g[i]);
    44         }
    45         dfs(0, 0);
    46         printf("%d
    ", ans);
    47     }
    48     //system("pause");
    49     return 0;
    50 }
  • 相关阅读:
    Java 继承和重写
    Java 构造函数和函数重载
    java 面向对象
    for循环和数组例题
    java数组和函数
    java程序流程控制
    CF600C Make Palindrome
    CF600A Extract Numbers
    [NOI2007]社交网络
    SPOJ 6779 GSS7
  • 原文地址:https://www.cnblogs.com/ouyang_wsgwz/p/8711074.html
Copyright © 2011-2022 走看看