蓝桥杯第八届省赛JAVA真题----方格分割
2018-03-20 13:31
633 查看
标题:方格分割
6x6的方格,沿着格子的边线剪开成两部分。
要求这两部分的形状完全相同。
如图:p1.png, p2.png, p3.png 就是可行的分割法。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201803/d9b250f9132d05e154b16cd5f9439fd1)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201803/8048161a00b60a9a489f42ca1a190bc6)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201803/e644703e9c49c8e85d888bc5704f4d1d)
试计算:
包括这3种分法在内,一共有多少种不同的分割方法。
注意:旋转对称的属于同一种分割法。
请提交该整数,不要填写任何多余的内容或说明文字。
解析:从中心N/2开始进行深搜,需要定义方向数组dir[][]和记录数组vis[][]
6x6的方格,沿着格子的边线剪开成两部分。
要求这两部分的形状完全相同。
如图:p1.png, p2.png, p3.png 就是可行的分割法。
试计算:
包括这3种分法在内,一共有多少种不同的分割方法。
注意:旋转对称的属于同一种分割法。
请提交该整数,不要填写任何多余的内容或说明文字。
解析:从中心N/2开始进行深搜,需要定义方向数组dir[][]和记录数组vis[][]
public class Main { static int[][] a = new int[6][6]; static boolean[][] vis = new boolean[10][10]; static int[][] dir = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}}; static int cnt = 0; public static void main(String[] args) { vis[3][3] = true; f(3, 3); System.out.println(cnt/4); } private static void f(int x, int y) { // TODO Auto-generated method stub if (x == 0 || x == 6 || y == 0 || y == 6) { cnt++; return; } for (int i = 0; i < 4; i++) { int dx = x + dir[i][0]; int dy = y + dir[i][1]; if (dx < 0 || dx > 6 || dy < 0 || dy > 6) { continue; } if (vis[dx][dy] == false) { vis[dx][dy] = true; vis[6-dx][6-dy] = true; f(dx, dy); vis[6-dx][6-dy] = false; vis[dx][dy] = false; } } } }
相关文章推荐
- 蓝桥杯第八届省赛JAVA真题----最大公共子串
- 蓝桥杯第八届省赛JAVA真题----Excel地址
- 蓝桥杯第八届省赛JAVA真题----分巧克力
- 蓝桥杯第八届省赛JAVA真题----迷宫
- 蓝桥杯第八届省赛JAVA真题----承压计算
- 蓝桥杯第八届省赛JAVA真题----油漆面积
- 第八届 蓝桥杯 c/c++ B组 省赛 (4)——方格分割
- 第八届蓝桥杯省赛真题 - 4.方格分割
- 蓝桥杯第八届省赛JAVA真题----日期问题
- 蓝桥杯第八届省赛JAVA真题----包子凑数
- 2017第八届蓝桥杯省赛Java A组--方格分割
- 蓝桥杯第八届省赛JAVA真题----字母组串
- 蓝桥杯第八届省赛JAVA真题----9数算式
- 蓝桥杯第八届省赛JAVA真题----拉马车
- 第八届蓝桥杯省赛B组c++_方格分割
- 蓝桥杯第八届省赛JAVA真题----正则问题
- 第八届蓝桥杯C++B组 方格分割
- 2018 蓝桥杯 省赛 B组 原题 Java语言B组 第2题 第九届蓝桥杯真题 方格计数
- 第八届蓝桥杯【省赛试题4】方格分割
- 第七届蓝桥杯Java语言B组真题(省赛)