zoukankan      html  css  js  c++  java
  • 方格分割

    /*
    标题:方格分割
    
    6x6的方格,沿着格子的边线剪开成两部分。
    要求这两部分的形状完全相同。
    
    如图:p1.png, p2.png, p3.png 就是可行的分割法。
    
    试计算:
    包括这3种分法在内,一共有多少种不同的分割方法。
    注意:旋转对称的属于同一种分割法。
    
    请提交该整数,不要填写任何多余的内容或说明文字。
    
    。*/
    package test;
    
    public class 方格分割 { 
        static int[][] book=new int[10][10];  
        static int[][] dire=new int[][]{{-1,0},{1,0},{0,-1},{0,1}};  
        static  int N=6;  
        static int ans;  
        static void dfs(int x,int y)  
        {  
            if(x==0||y==N||x==N||y==0){ //当走到方格边处,且符合条件的
                ans++;return;   
            }     
            for(int i=0;i<4;i++)  //每个方格有上下左右方向
            {  
                int nx=x+dire[i][0];  
                int ny=y+dire[i][1];  
                if(nx<0||nx>N||y<0||ny>N)continue;  
                if(book[nx][ny]==0)  //该格未被标记过
                {  
                    book[nx][ny]=1;  //标记该方格,并标记对称方格
                    book[N-nx][N-ny]=1;  
                    dfs(nx,ny);  
                      
                    book[nx][ny]=0;  
                    book[N-nx][N-ny]=0;  //回溯
                }  
                  
            }  
        }  
        public static void main(String arg[])  
        {   
            book[N/2][N/2]=1;//基于对称则在方格中心位置必然是对称的  
            dfs(N/2,N/2);  
            System.out.print(ans/4); //旋转2对称2,2*2   
         }   
    }
  • 相关阅读:
    Windows XP SP1 Privilege Escalation
    A way escape rbash
    A trick in Exploit Dev
    wget.vbs & wget.ps1
    IDEA创建普通java和web项目教程
    初始Mybatis
    JAVA高级面试题
    JVM执行原理
    java-- 位运算
    JAVA---XML
  • 原文地址:https://www.cnblogs.com/ljs-666/p/8612769.html
Copyright © 2011-2022 走看看