第八届蓝桥杯省赛-方格分割-图的深度优先遍历(DFS)

标题:方格分割

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

如图:p1.png, p2.png, p3.png 就是可行的分割法。
《第八届蓝桥杯省赛-方格分割-图的深度优先遍历(DFS)》
《第八届蓝桥杯省赛-方格分割-图的深度优先遍历(DFS)》
《第八届蓝桥杯省赛-方格分割-图的深度优先遍历(DFS)》
试计算:
包括这3种分法在内,一共有多少种不同的分割方法。
注意:旋转对称的属于同一种分割法。

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

public class 方格分割 {
	static int dx[]= {0,0,-1,1},dy[]= {1,-1,0,0},ans;
	static boolean visited[][]=new boolean[7][7];
	static void dfs(int x,int y) {
		if(x==0||y==0||x==6||y==6) {
			ans++;
			return;
		}
		for(int i=0;i<4;i++) {
			int nx=x+dx[i],ny=y+dy[i];
			if(!visited[nx][ny]) {
				visited[nx][ny]=visited[6-nx][6-ny]=true;
				dfs(nx,ny);
				visited[nx][ny]=visited[6-nx][6-ny]=false;	
			}
		}
	}
	public static void main(String[] args) {
	    visited[3][3]=true;
		dfs(3,3);
		System.out.println(ans/4);
	}
}
答案:509
    原文作者:数据结构之图
    原文地址: https://blog.csdn.net/qq_38829455/article/details/85558656
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞