LQ0144 方格分割DFS

Posted 海岛Blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LQ0144 方格分割DFS相关的知识,希望对你有一定的参考价值。

问题来源:蓝桥杯2017初赛 C++A组D题

题目描述
6x6的方格,沿着格子的边线剪开成两部分。要求这两部分的形状完全相同。如图就是可行的分割法。

试计算:包括这3种分法在内,一共有多少种不同的分割方法。注意:旋转对称的属于同一种分割法。

输出格式
输出一个整数表示答案

问题分析
(略)

AC的C语言程序如下:

/* LQ0144 方格分割 */

#include <stdio.h>
#include <string.h>

const int drow[] = 0, 0, -1, 1;
const int dcol[] = 1, -1, 0, 0;

#define N 6
int vis[N + 1][N + 1];
int cnt = 0;

void dfs(int r, int c)

    if (r == 0 || r == 6 || c == 0 || c == 6)
        cnt++;
    else 
        vis[r][c] = vis[N - r][N - c] = 1;
        for (int i = 0; i < 4; i++) 
            int nr = r + drow[i];
            int nc = c + dcol[i];
            if (0 <= nr && nr <= N && 0 <= nc && nc <= N)
                if (vis[nr][nc] == 0)
                    dfs(nr, nc);
        
        vis[r][c] = vis[N - r][N - c] = 0;
    


int main()

    memset(vis, 0, sizeof vis);

    dfs(3, 3);

    printf("%d\\n", cnt / 4);

    return 0;

以上是关于LQ0144 方格分割DFS的主要内容,如果未能解决你的问题,请参考以下文章

方格分割 蓝桥杯心得

萌新刚开始学数据结构,方格分割(蓝桥杯)

蓝桥杯2017_B t3方格分割

蓝桥杯2017_B t3方格分割

蓝桥杯2017_B t3方格分割

LQ0116 方格计数数学计算