每日算法之方格填数
Posted lenkong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日算法之方格填数相关的知识,希望对你有一定的参考价值。
如下的10个格子
参看下图
填入0~9的数字。要求:连续的两个数字不能相邻。
(左右、上下、对角都算相邻)
一共有多少种可能的填数方案?
请填写表示方案数目的整数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
个人认为也是属于解法类型的,还是需要借助前面的题目,只是验证方法不一样而已
1 package Square_Fill; 2 3 public class Main{ 4 static int count =0; 5 6 public static void main(String args[]){ 7 char []str = "0123456789".toCharArray(); 8 paixu(str,0,9); 9 System.out.println(count); 10 } 11 public static void swap(char[] str,int a, int b){ 12 char temp ; 13 temp = str[a]; 14 str[a] = str[b]; 15 str[b] = temp; 16 } 17 public static boolean check(char[] str){ 18 if(check2(str[0],str[1])&&check2(str[0],str[3])&&check2(str[0],str[4])&&check2(str[0],str[5])&&check2(str[1],str[2])&& 19 check2(str[1],str[4])&&check2(str[1],str[5])&&check2(str[1],str[6])&&check2(str[2],str[5])&& check2(str[2],str[6])&& 20 check2(str[3],str[4])&&check2(str[3],str[7])&&check2(str[3],str[8])&&check2(str[4],str[5])&& check2(str[4],str[7])&& 21 check2(str[4],str[8])&&check2(str[4],str[9])&&check2(str[5],str[6])&&check2(str[5],str[9])&& check2(str[5],str[8])&& 22 check2(str[6],str[9])&&check2(str[7],str[8])&&check2(str[8],str[9])) 23 { 24 return true; 25 } 26 else return false; 27 28 } 29 public static boolean check2(char a,char b){ 30 if(a==(b+1)||a==(b-1)){ 31 return false; 32 } 33 return true; 34 } 35 public static void paixu(char[] str,int a,int length){ 36 if(a==length){ 37 if(check(str)){ 38 count++; 39 System.out.println(String.valueOf(str)); 40 } 41 }else 42 { 43 for(int i=a;i<=length;++i){ 44 swap(str,i,a); 45 paixu(str,a+1,length); 46 swap(str,i,a); 47 } 48 } 49 } 50 }
以上是关于每日算法之方格填数的主要内容,如果未能解决你的问题,请参考以下文章