博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SSL-练习题目:种树 题解
阅读量:4557 次
发布时间:2019-06-08

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

种树(normal)

Time Limit:1000MS  Memory Limit:65536K

Total Submit:213 Accepted:114

Description

  在6*6的方格地盘中,种植24颗树,使每行、每列都有4颗树。

  求出所有可能的种植方案总数。
  种植方案的说明:输出一个6*6的矩阵,种树的方格用“*”表示,没种树的用“.”表示。
  如下是一种方案((样例仅说明格式,并不代表结果)
****..
..****
**..**
..****
****..
**..**
 

Input

Output

一个数即总数

Sample Input

 

Sample Output

//以下表示其中的10种,不需要输出,输出总数即可Case 1:****..****..**..****..**..****..****Case 2:****..****..**..***.*.**.*.***..****Case 3:****..****..**..***.*.**..****.*.***Case 4:****..****..**..***..***.**.**..****Case 5:****..****..**..***..***..****.**.**Case 6:****..****..**..**.**.***..***..****Case 7:****..****..**..**.**.**..*****..***Case 8:****..****..**..**.*.****.*.**..****Case 9:****..****..**..**.*.***..*****.*.**Case 10:****..****..**..**..******..**..****

Source

elba

#include#includeusing namespace std;int s,l[7];void trees(int x,int k1,int k2){if (l[k1]>1 || l[k2]>1) return;//判断该列还可不可以插入空格if (x==6)//退出条件{s++;return; }l[k1]++;l[k2]++;//该列空格的数量加1for (int i=1;i<=5;i++) for (int j=i+1;j<=6;j++)   trees(x+1,i,j);l[k1]--;l[k2]--;//回溯}int main(){ for (int i=1;i<=5;i++) for (int j=i+1;j<=6;j++)   trees(1,i,j);cout<

题解:

本题有两种解法,第一种是一个一个格子决定种还是不种,可是这样时间会比较久,所以我就想到了用八皇后的做法,

for (int i=1;i<=5;i++)
  for (int j=i+1;j<=6;j++)
    trees(x+1,i,j);

首先一行的树要4颗,这样循环会比较麻烦,那么就可以循环空位的地方,x表示行数,i和j表示空位的位置。然后用变量L表示该列有多少个空位,最多2个。然后当列数到了6行之后就可以退出累加了。

转载于:https://www.cnblogs.com/sslwyc/p/9218664.html

你可能感兴趣的文章
Borg Maze(MST & bfs)
查看>>
使用 CSS 的 :before 和 :after 选择器做一个箭头样式
查看>>
上帝模式~~~有效的隐藏文件!
查看>>
CODE[VS] 2291 糖果堆
查看>>
Bzoj2673 3961: [WF2011]Chips Challenge 费用流
查看>>
dwz tree组件 取得所选择的值
查看>>
sql like模糊查询的条件拼接
查看>>
python 3 廖雪峰博客笔记(一) python特性
查看>>
JAVA学习心得
查看>>
[转]推荐highcharts学习网址
查看>>
centos7下自定义服务启动和自动执行脚本
查看>>
docker上部署nginx容器80端口自动转443端口
查看>>
ps命令查看子进程
查看>>
2019春第七周编程总结
查看>>
angularjs1-7,http,location
查看>>
sass01
查看>>
Java 8 Lambda 表达式
查看>>
codeblocks 教程
查看>>
微信小微商户申请入驻
查看>>
Java的并发和多处理器的并行的理解
查看>>