五星填数--第六届蓝桥杯国赛JAVA B组第二题
来源:互联网 发布:知豆电动汽车代理加盟 编辑:程序博客网 时间:2024/05/22 23:59
标题:五星填数
如【图1.png】的五星图案节点填上数字:1~12,除去7和11。
要求每条直线上数字和相等。
如图就是恰当的填法。
请你利用计算机搜索所有可能的填法有多少种。
注意:旋转或镜像后相同的算同一种填法。
如【图1.png】的五星图案节点填上数字:1~12,除去7和11。
要求每条直线上数字和相等。
如图就是恰当的填法。
请你利用计算机搜索所有可能的填法有多少种。
注意:旋转或镜像后相同的算同一种填法。
请提交表示方案数目的整数,不要填写任何其它内容。
思路:枚举遍历,我们从上到下依次放倒一个数组里,然后判断即可。
有一点就是,要排除旋转和镜像中重复的,不太明白为什么是除以10。。
求解答~~
package 总决赛;import java.io.*;public class 五星填数 {static int[]n = new int[10];static int num = 0;static boolean vis[] = new boolean[12];static boolean is_same(int[]a){int b[] = new int[5];b[0] = a[0]+a[2]+a[5]+a[8];b[1] = a[0]+a[3]+a[6]+a[9];b[2] = a[1]+a[5]+a[7]+a[9];b[3] = a[4]+a[6]+a[7]+a[8];b[4] = a[1]+a[2]+a[3]+a[4];for(int i=0;i<5;i++)for(int j=i;j<5;j++){if(b[i] != b[j])return false;}return true;}static void dfs(int[]a,int d){if(d >= 10){if(is_same(a))num++;return;}for(int i=1;i<=12;i++){//1-12数字if(i == 7 || i == 11)continue;if(!vis[i-1]){a[d++] = i;vis[i-1] = true;dfs(a,d);d--;vis[i-1] = false;}}}public static void main(String[] args) {// TODO Auto-generated method stubdfs(new int[10],0);for(int i=0;i<12;i++){vis[i] = false;}System.out.print(num/10);}}
阅读全文
0 0
- 五星填数--第六届蓝桥杯国赛JAVA B组第二题
- 蓝桥杯java第六届决赛第二题--五星填数
- 蓝桥杯第六届决赛:五星填数
- 2015年蓝桥杯JavaB组五星填数
- 五星填数--回溯
- dfs 五星填数
- 五星填数
- 五星填数_蓝桥杯
- 历届试题 五星填数
- 蓝桥杯题 五星填数(dfs)
- 五星填数-蓝桥杯决赛
- 2016 蓝桥杯省赛C语言B组 第六题 方格填数
- 【2016 蓝桥杯省赛C语言B组 第六题 方格填数】+ 快排
- 蓝桥杯 历届试题 五星填数
- 蓝桥决赛---五星填数
- 蓝桥杯-第七届Java语言B组-方格填数
- 蓝桥杯JAVA语言B组_方格填数
- 第八届蓝桥杯国赛Java b组 第六题
- 控制台输入三条边长,判断是否能构成三角形。如果能构成,输出三角形的周长,并且告知该三角形是什么类型(锐角、直角、钝角),再判断下该三角形是 等腰、等边还是不等边三角形。
- Android-Iconics 开源库的使用
- 8月面试的几道编程基础题(持续更新各种面试题)
- 二分-UVA10341
- 无序数组的中位数
- 五星填数--第六届蓝桥杯国赛JAVA B组第二题
- java并发与线程
- DFS--深度优先搜索
- Zookeeper集群模式无法部署云服务器【java.net.BindException: 无法指定被请求的地址 (Bind failed)】的解决
- equals和==的区别分析
- 两日期间隔
- Unity-Graphic绘制菱形Rhombus
- KMP算法
- 安卓插件化框架学习-前情提要