码迷,mamicode.com
首页 > 编程语言 > 详细

每日算法之方格填数

时间:2018-04-12 22:34:35      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:方法   ++   ==   10个   左右   check   内容   不能   []   

如下的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 }

 

每日算法之方格填数

标签:方法   ++   ==   10个   左右   check   内容   不能   []   

原文地址:https://www.cnblogs.com/lenkong/p/8810293.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!