首页 > 学院 > 开发设计 > 正文

方格填数

2019-11-09 19:12:58
字体:
来源:转载
供稿:网友

题目

填入0~9的数字。要求:连续的两个数字不能相邻。 (左右、上下、对角都算相邻) 一共有多少种可能的填数方案?

思路

将表格从上到下从左到右从0开始编号 判断每种相邻的方案是否是连续数字,不是则+1

代码

import java.util.*;public class Main{ static int count=0; static void swap(char[]array,int a,int b){ char temp=array[a]; array[a]=array[b]; array[b]=temp; } static boolean check(char[]str){ 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])&&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]) &&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])&&check2(str[4],str[8])&&check2(str[4],str[9]) &&check2(str[5],str[6])&&check2(str[5],str[8])&&check2(str[5],str[9]) &&check2(str[6],str[9])&&check2(str[7],str[8])&&check2(str[8],str[9])) return true; return false; } static boolean check2(char c,char d){ if(c==(d+1)||c==(d-1)) return false; return true; } static void permutation(char[]str,int a,int length){ if(a==length){ if(check(str)){ count++;// System.out.PRintln(String.valueOf(str)); } }else{ for(int i=a;i<=length;i++){ swap(str,i,a); permutation(str,a+1,length); swap(str,i,a); } } } public static void main(String[] args){ char[]str="0123456789".toCharArray(); permutation(str,0,9); System.out.println(count); }}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表