第八届蓝桥杯C++B组第四题:方格分割
2018-03-17 23:22
309 查看
题目:
标题:方格分割6x6的方格,沿着格子的边线剪开成两部分。 要求这两部分的形状完全相同。 如图:p1.png, p2.png, p3.png 就是可行的分割法。 试计算: 包括这3种分法在内,一共有多少种不同的分割方法。 注意:旋转对称的属于同一种分割法。 请提交该整数,不要填写任何多余的内容或说明文字。
思路:从中间开始走,上下左右四个方向深度优先搜索,走到边即为一种。每走一个点还要记录中心对称的那个点。最后结果/4(旋转对称的算一种)
代码:
// 方格分割 #include <bits/stdc++.h> using namespace std; int route[7][7]{0}; int pos[4][2] = {{0,1},{0,-1},{-1,0},{1,0}}; int cnt=0; void walk(int x, int y) { // 到达任一条边,满足条件 if(x==0 || x==6 || y==0 || y==6) { cnt += 1; return; } // 上下左右四个方向各走一遍 for(int i=0;i<4;++i) { int tx = x+pos[i][0]; int ty = y+pos[i][1]; if(tx<0||tx>6||ty<0||ty>6) continue; if(!route[tx][ty]) { route[tx][ty]=1; route[6-tx][6-ty]=1; walk(tx,ty); route[tx][ty]=0; route[6-tx][6-ty]=0; } } } int main() { route[3][3]=1; walk(3,3); cout << cnt/4 << endl; return 0; } // 结果: 509
相关文章推荐
- 第八届蓝桥杯第四题方格分割
- 第八届蓝桥杯省赛B组c++_方格分割
- 第八届蓝桥杯第四题:方格分割
- 第八届蓝桥杯C++B组 方格分割
- 第八届 蓝桥杯 c/c++ B组 省赛 (4)——方格分割
- 第八届蓝桥杯c++大学A组(省赛)——第四题
- 第八届蓝桥杯方格分割深搜
- 2017第八届蓝桥杯省赛Java A组--方格分割
- 蓝桥杯第八届 方格分割(dfs)
- 2017第八届蓝桥杯C/C++ B组省赛第四题 dfs
- 蓝桥杯第八届省赛JAVA真题----方格分割
- 蓝桥杯 方格分割 第八届
- 第八届蓝桥杯省赛真题 - 4.方格分割
- 方格分割-第八届蓝桥杯c/c++组
- 2017第八届蓝桥杯省赛-大学A组 方格分割(深搜dfs)
- 蓝桥杯第八届_方格分割
- 第八届蓝桥杯 方格分割
- (2017)第八届蓝桥杯大赛个人赛省赛(软件类) C/C++ 大学A组 题解(第三题和第四题)
- 第八届蓝桥杯【省赛试题4】方格分割
- 第八届蓝桥杯第4题:方格分割