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

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

    原贴https://www.cnblogs.com/hfc-xx/p/4684152.html

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    char a[10][10];     //记录棋盘位置
    int book[10];        //记录一列是否已经放过棋子
    int n,k;
    int total,m;    //total 是放棋子的方案数 ,m是已放入棋盘的棋子数目
    
    void DFS(int cur)
    {
        if(k==m)
        {
            total++;
            return ;
        }
        if(cur>=n)  return ;
        for(int j=0; j<n; j++)
            if(book[j]==0 && a[cur][j]=='#')  //判断条件
            {
                book[j]=1;           //标记
                m++;                 
                DFS(cur+1);
                book[j]=0;           //改回来方便下一行的判断
                m--;
            }
        DFS(cur+1);                //到下一行
    }
    
    int main()
    {
        int i,j;
        while(scanf("%d%d",&n,&k)&&n!=-1&&k!=-1) //限制条件
        {
            total=0;
            m=0;
            for(i=0; i<n; i++)
                scanf("%s",&a[i]);
            memset(book,0,sizeof(book));
            DFS(0);
            printf("%d
    ",total);
        }
        return 0;
    }
    
  • 相关阅读:
    Sql server数据库设计 7
    day08作业
    day01作业
    day07作业.
    day05作业
    day04作业
    day02作业
    初学Java的一些注意事项
    day07作业
    Week03面向对象入门
  • 原文地址:https://www.cnblogs.com/Hunter01/p/12694733.html
Copyright © 2011-2022 走看看