博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ1321-棋盘问题
阅读量:4955 次
发布时间:2019-06-12

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

【题目描述】

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

【输入】

输入含有多组测试数据。

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

【输出】

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

【输入示例】

2 1

#.

.#

4 4

...#
..#.
.#..
#...
-1 -1

【输出示例】

2

1

【思路】

这是一道深搜、递归题。

在找到一个棋子后,标记它所在的列,再搜索它后边的一列。

【代码】

#include
using namespace std;int m,n,cnt=0;bool flag[10];char Map[10][10];void fz(int x,int d)//搜索一列{ if(n==d)//棋子放完 { cnt++; return; } if(x>=m)//越出边界 return; int i,j; for(i=0; i
>m>>n&&m!=-1&&n!=-1) { int i,j; for(i=0; i
>Map[i]; memset(flag,0,sizeof(flag)); cnt=0; fz(0,0); cout<
<

你知道我是怎么做题的吗:

转载于:https://www.cnblogs.com/4D24/p/9454716.html

你可能感兴趣的文章
access remote libvirtd
查看>>
(4) Orchard 开发之 Page 的信息存在哪?
查看>>
ASP.NET中 GridView(网格视图)的使用前台绑定
查看>>
Haskell学习-高阶函数
查看>>
深入了解Oracle ASM(二):ASM File number 1 文件目录
查看>>
Boosting(提升方法)之AdaBoost
查看>>
链接元素<a>
查看>>
Binding object to winForm controller through VS2010 Designer(通过VS2010设计器将对象绑定到winForm控件上)...
查看>>
Spring Boot实战笔记(二)-- Spring常用配置(Scope、Spring EL和资源调用)
查看>>
第二章:webdriver 控制浏览器窗口大小
查看>>
【动态规划】流水作业调度问题与Johnson法则
查看>>
Python&Selenium&Unittest&BeautifuReport 自动化测试并生成HTML自动化测试报告
查看>>
活现被翻转生命
查看>>
POJ 1228
查看>>
SwaggerUI+SpringMVC——构建RestFul API的可视化界面
查看>>
springmvc怎么在启动时自己执行一个线程
查看>>
流操作的规律
查看>>
Python基础学习15--异常的分类与处理
查看>>
javascript运算符的优先级
查看>>
React + Redux 入门(一):抛开 React 学 Redux
查看>>