蓝桥杯省赛-方格分割

xiaoxiao2021-02-28  59

题目:方格分割

标题:方格分割6x6的方格,沿着格子的边线剪开成两部分。要求这两部分的形状完全相同。

试计算:包括这3种分法在内,一共有多少种不同的分割方法。

如图:p1.png, p2.png, p3.png 就是可行的分割法。

注意:旋转对称的属于同一种分割法。

请提交该整数,不要填写任何多余的内容或说明文字。

解题分析:

1.关键在于怎么剪裁,我的方法是从中心点开始,dfs到达边界的可能性

2.易错点:a.对称剪裁,所以每一次移动要标记两个点    b.最后的结果    要除4

代码:

#include<iostream> #define maxn 10 //#define N 6 int N=6; using namespace std; int out[maxn][maxn]={0},num=0; int turn[4][2]={-1,0,1,0,0,-1,0,1}; void dfs(int x,int y) { if(x==0||x==6||y==0||y==6) { num++; return; } else { for(int i=0;i<4;i++) { int tx=x+turn[i][0]; int ty=y+turn[i][1]; if(out[tx][ty]) continue; out[tx][ty]=out[N-tx][N-ty]=1; dfs(tx,ty); out[tx][ty]=out[N-tx][N-ty]=0; } } } int main() { out[N/2][N/2]=1; dfs(3,3); cout<<num/4; return 0; } 正确结果为:509

转载请注明原文地址: https://www.6miu.com/read-2624211.html

最新回复(0)