JAVA 蓝桥杯 第七届B组 第六题 方格填数 带思路 - 程序员阿鑫-带你一起秃头!

JAVA 蓝桥杯 第七届B组 第六题 方格填数 带思路

作者: 程序员阿鑫

好兄弟,我们一起掉头发!

手机扫码查看

特别声明:文章多为网络转载,资源使用一般不提供任何帮助,特殊资源除外,如有侵权请联系!

题目:

如下的10个格子

填入0~9的数字。要求:连续的两个数字不能相邻。
(左右、上下、对角都算相邻)

一共有多少种可能的填数方案?

请填写表示方案数目的整数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。

思路:

第一开始想的是用二维数组,后来觉得太麻烦,直接用一维数组去判断

不用想太复杂,把每个格子减一边值的绝对值不为1即可

例如:

0-1 , 0-3 , 0-4 , 0-5;

1-2 ,1-4 ,1-5 ,1-6;

2-5 ,2-6,;

3-4 ,3-7 ,3-8;

4-5 ,4-7 , 4-8 ,4-9;

5-6, 5-8 , 5-9;

7-8 ;

8-9;

不需要在用1-0,...的重复判断,绝对值不为1即可

利用全排列对数值进行排列筛选放入Set集合去重

最后输出Set集合长度

答案:

1580

代码:

在网站上看有点乱,可以复制到编译器中查看

package com.cxyax.review;

import java.util.Set;
import java.util.TreeSet;

public class Main3 {
	static int[] nums = {0,1,2,3,4,5,6,7,8,9};
	static Set<String> set = new TreeSet<String>();
	
	public static void f(int x){
		String str = "";
		//每个格子都减一次,绝对值不为1,就不用判断-1,减过得格子不用进行二次判断
		if(Math.abs(nums[0] - nums[1]) != 1 && Math.abs(nums[0] - nums[3]) != 1 && Math.abs(nums[0] - nums[4]) != 1 && Math.abs(nums[0] - nums[5]) != 1 &&
			Math.abs(nums[1] - nums[2]) != 1 &&	Math.abs(nums[1] - nums[5]) != 1 && Math.abs(nums[1] - nums[6]) != 1 && Math.abs(nums[1] - nums[4]) != 1 &&
			Math.abs(nums[2] - nums[5]) != 1 &&	Math.abs(nums[2] - nums[6]) != 1 &&
			Math.abs(nums[3] - nums[4]) != 1 &&	Math.abs(nums[3] - nums[7]) != 1 && Math.abs(nums[3] - nums[8]) != 1 &&
			Math.abs(nums[4] - nums[5]) != 1 && Math.abs(nums[4] - nums[7]) != 1 && Math.abs(nums[4] - nums[8]) != 1 && Math.abs(nums[4] - nums[9]) != 1 &&
			Math.abs(nums[5] - nums[6]) != 1 && Math.abs(nums[5] - nums[8]) != 1 && Math.abs(nums[5] - nums[9]) != 1 &&
			Math.abs(nums[6] - nums[9]) != 1 &&
			Math.abs(nums[7] - nums[8]) != 1 && 
			Math.abs(nums[8] - nums[9]) != 1){
			for(int i = 0; i < nums.length;i++){
				str += nums[i]+"";
			}
			set.add(str);
					
		}
		//全排列
		for(int i = x; i < nums.length;i++){
			int y = nums[x];
			nums[x] = nums[i];
			nums[i] = y;
			f(x+1);
			y = nums[x];
			nums[x] = nums[i];
			nums[i] = y;
		}
	}
	
	public static void main(String[] args) {
		f(0);
		System.out.println(set.size());
	}

}

以上是《JAVA 蓝桥杯 第七届B组 第六题 方格填数 带思路》的全部内容,

感谢您对程序员阿鑫博客的支持!

本文最后更新于2020-10-16,已超过 1 年没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!
分享到:
打赏
未经允许不得转载:

作者: 程序员阿鑫, 转载或复制请以 超链接形式 并注明出处 程序员阿鑫-带你一起秃头!
原文地址: 《JAVA 蓝桥杯 第七届B组 第六题 方格填数 带思路》 发布于2020-10-16

评论

切换注册

登录

忘记密码?

您也可以使用第三方帐号快捷登录

切换登录

注册

JAVA 蓝桥杯 第七届B组 第六题 方格填数 带思路

长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏