博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj-1321棋盘问题(dfs 找出最多有几种摆放棋子的可能)
阅读量:4048 次
发布时间:2019-05-25

本文共 826 字,大约阅读时间需要 2 分钟。

棋盘问题
Time Limit: 1000MS   Memory Limit: 10000K
Total Submissions: 36385   Accepted: 17950

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

21

Source

#include
#include
#include
#include
using namespace std;char map[10][10];bool a[10][10];//表示棋盘 int rol[10];//表示每一列有没有摆放过棋子 int n,k;int num;void dfs(int h,int s)//h表示当前所在的行 s表示当前所摆放的棋子数目 { if(s==k)//如果已经摆放完成 可能性的数目要加一 { num++; return; //返回上一级 } if(h>=n)//超出棋盘范围结束搜索 return; for(int i=0;i

转载地址:http://safci.baihongyu.com/

你可能感兴趣的文章
linux 驱动开发 头文件
查看>>
container_of()传入结构体中的成员,返回该结构体的首地址
查看>>
ipconfig,ifconfig,iwconfig
查看>>
opensuse12.2 PL2303 minicom
查看>>
网络视频服务器移植
查看>>
Encoding Schemes
查看>>
移植QT
查看>>
如此调用
查看>>
计算机的发展史
查看>>
带WiringPi库的交叉编译如何处理一
查看>>
带WiringPi库的交叉笔译如何处理二之软链接概念
查看>>
Spring事务的七种传播行为
查看>>
ES写入找不到主节点问题排查
查看>>
Java8 HashMap集合解析
查看>>
欢迎使用CSDN-markdown编辑器
查看>>
Android计算器实现源码分析
查看>>
Android系统构架
查看>>
Android 跨应用程序访问窗口知识点总结
查看>>
各种排序算法的分析及java实现
查看>>
SSH框架总结(框架分析+环境搭建+实例源码下载)
查看>>