• Java实现第八届蓝桥杯方格分割


    方格分割

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

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

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

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

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    PS:
    包括这3种分法在内,一共有多少种不同的分割方法。
    注意:旋转对称的属于同一种分割法。
    请提交该整数,不要填写任何多余的内容或说明文字。

    解析:从中心N/2开始进行深搜,需要定义方向数组dir[][]和记录数组vis[][]

    public class Main
    {
    	static int[][] a = new int[6][6];
    	static boolean[][] vis = new boolean[10][10];
    	static int[][] dir = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}};
    	static int cnt = 0;
    	public static void main(String[] args) {
    		vis[3][3] = true;
    		f(3, 3);
    		System.out.println(cnt/4);
    	}
    	private static void f(int x, int y) {
    		// TODO Auto-generated method stub
    		if (x == 0 || x == 6 || y == 0 || y == 6) {
    			cnt++;
    			return;
    		}
    		for (int i = 0; i < 4; i++) {
    			int dx = x + dir[i][0];
    			int dy = y + dir[i][1];
    			if (vis[dx][dy] == false) {
    				vis[dx][dy] = true;
    				vis[6-dx][6-dy] = true;
    				f(dx, dy);
    				vis[6-dx][6-dy] = false;
    				vis[dx][dy] = false;
    			}
    			
    		}
    	}
    }
    
    
  • 相关阅读:
    前端开发之初探五
    前端开发之初探四
    前端开发之初探三
    漫谈
    前端工程师的发展之路
    SVG
    前端开发之初探一
    前端开发之初探二
    详解浏览器缓存
    webStroage案例
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13077425.html
Copyright © 2020-2023  润新知