DFS
DFS
-
格子分割
描述:6x6的方格,沿着格子的边线剪开成两部分。 要求这两部分的形状完全相同。问有多少种方法(旋转的方法算同一种)
关键词:dfs深搜,对称图形,分割
思路:根据分割线的对称性,所以从中心点开始回溯+深搜,并且双向标记
class One{ int N=6; public void teet(){ // 初始化 int vis[][]=new int[N+1][N+1]; vis[3][3]=1; dfs(3,3,vis); System.out.println(ans/4); } int ans=0; int [][]dir={{0,1},{0,-1},{-1,0},{1,0}}; public void dfs(int x,int y,int [][]vis){ if(x==0||y==0||x==N||y==N){ ans++; return; } for(int i=0;i<4;i++){ if(vis[x+dir[i][0]][y+dir[i][1]]==0){ vis[x+dir[i][0]][y+dir[i][1]]=1; vis[N-(x+dir[i][0])][N-(y+dir[i][1])]=1; dfs(x+dir[i][0],y+dir[i][1],vis); vis[x+dir[i][0]][y+dir[i][1]]=0; vis[N-(x+dir[i][0])][N-(y+dir[i][1])]=0; } } } }




浙公网安备 33010602011771号