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

    题目来源:http://poj.org/problem?id=1321
    棋盘问题
    Time Limit: 1000MS   Memory Limit: 10000K
    Total Submissions: 38214   Accepted: 18724

    Description

    在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。

    Input

    输入含有多组测试数据。 
    每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋子的数目。 n <= 8 , k <= n 
    当为-1 -1时表示输入结束。 
    随后的n行描述了棋盘的形状:每行有n个字符,其中 # 表示棋盘区域, . 表示空白区域(数据保证不出现多余的空白行或者空白列)。 

    Output

    对于每一组数据,给出一行输出,输出摆放的方案数目C (数据保证C<2^31)。

    Sample Input

    2 1
    #.
    .#
    4 4
    ...#
    ..#.
    .#..
    #...
    -1 -1
    

    Sample Output

    2
    1
     1 #include <iostream>
     2 #include <cstring>
     3 using namespace std;
     4 
     5 const int ROW = 10;
     6 const int COL = 10;
     7 
     8 int book[COL];
     9 char chess[ROW][COL];
    10 int step, n;
    11 long long  sum;
    12 
    13 
    14 void DFS(char chess[][COL], int row,int k) {    //row代表行数。k代表放置的旗子个数。
    15     if (row > n)
    16         return;
    17     if (k == step) {
    18         sum++;
    19         return;
    20     }
    21         
    22     for (int j = 1; j <= 2; j++) {
    23         if (j == 1)                //代表该行不放置棋子
    24             DFS(chess, row + 1, k);   
    25         if (j == 2) {              //该行放置棋子
    26             for (int i = 0; i < n; i++) {
    27                 if (book[i] == 0 && chess[row][i] == '#') {
    28                     book[i] = 1;
    29                     DFS(chess, row + 1, k + 1);
    30                     book[i] = 0;
    31                 }
    32             }
    33         }
    34     }
    35 }
    36 
    37 
    38 int main() {
    39     while (cin >> n >> step) {
    40         sum = 0;
    41         cin.get();
    42         if (n == -1 && step == -1)
    43             break;
    44         for (int i = 0; i < n; i++)
    45             cin >> chess[i];
    46     
    47             DFS(chess, 0, 0);
    48         
    49 
    50 
    51         cout << sum << endl;
    52     }
    53 }
    自己选的路,跪着也要把它走完------ACM坑
  • 相关阅读:
    安装 node-sass 的不成功
    input标签附带提示文字(bootstrap里面输入框的两侧同时添加额外元素)
    更改bootstrap的默认样式
    属性font-family:Font property font-family does not have generic default
    let与const命令
    vue之监听事件
    组件复用传值(待解决问题)
    vue之组件注册
    vue之组件理解(一)
    学习整理与细化(2)——HTML VS XHTML
  • 原文地址:https://www.cnblogs.com/IKnowYou0/p/6103795.html
Copyright © 2011-2022 走看看