标题:五星填数 如【图1.png】的五星图案节点填上数字:1~12,除去7和11。 要求每条直线上数字和相等。 如图就是恰当的填法。 请你利用计算机搜索所有可能的填法有多少种。 注意:旋转或镜
2018-02-07 11:08
330 查看
标题:五星填数
如【图1.png】的五星图案节点填上数字:1~12,除去7和11。
要求每条直线上数字和相等。
如图就是恰当的填法。
请你利用计算机搜索所有可能的填法有多少种。
注意:旋转或镜像后相同的算同一种填法。
请提交表示方案数目的整数,不要填写任何其它内容。
答案12
package com.company;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Mr.Smart on 2018-02-07.
*/
public class Main18 {
private static int count = 0;
private static List<Integer> source;//定义一个集合用来初始化1-12数字,除去7和11
private static List<Integer> result;
private static List<Integer> tsource;
private static List<Integer> tresult;
public static void main(String[] args){
source = new ArrayList<>();
result = new ArrayList<>();
for (int i=1;i<=12;i++){
source.add(i);//初始化sorce集合
}
source.remove(6);//删除7
source.remove(9);//删除11因为删除7之后位置下标会减一所以下标为9
dfs(source,result);//调用dfs函数
System.out.println(count/10);//由于每种组合经过旋转和镜像之后都有10种不同的组合满足条件
}
private static void dfs(List<Integer> source, List<Integer> result) {
if (source.size()==0){//判断source是否为空,如果为空则说明source完成了一次排序
if (check()) count++;
}
for (int i=0;i<source.size();i++){
tsource = new ArrayList<>(source);//将source中的值赋给tsource
tresult = new ArrayList<>(result);//tresult
tresult.add(tsource.get(i));//向tresult中加入一个元素
tsource
4000
.remove(i);//并在tsource中删除该元素
dfs(tsource,tresult);
}
}
public static boolean check() //检验是不是相等
{
int a = tresult.get(0);
int b = tresult.get(1);
int c = tresult.get(2);
int d = tresult.get(3);
int e = tresult.get(4);
int f = tresult.get(5);
int g = tresult.get(6);
int h = tresult.get(7);
int i = tresult.get(8);
int j = tresult.get(9);
if (a+c+f+i == a+d+g+j && a+d+g+j == b+c+d+e && b+c+d+e == b+f+h+j&&b+f+h+j == e+g+h+i){
return true;
}
return false;
}
}
如【图1.png】的五星图案节点填上数字:1~12,除去7和11。
要求每条直线上数字和相等。
如图就是恰当的填法。
请你利用计算机搜索所有可能的填法有多少种。
注意:旋转或镜像后相同的算同一种填法。
请提交表示方案数目的整数,不要填写任何其它内容。
答案12
package com.company;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Mr.Smart on 2018-02-07.
*/
public class Main18 {
private static int count = 0;
private static List<Integer> source;//定义一个集合用来初始化1-12数字,除去7和11
private static List<Integer> result;
private static List<Integer> tsource;
private static List<Integer> tresult;
public static void main(String[] args){
source = new ArrayList<>();
result = new ArrayList<>();
for (int i=1;i<=12;i++){
source.add(i);//初始化sorce集合
}
source.remove(6);//删除7
source.remove(9);//删除11因为删除7之后位置下标会减一所以下标为9
dfs(source,result);//调用dfs函数
System.out.println(count/10);//由于每种组合经过旋转和镜像之后都有10种不同的组合满足条件
}
private static void dfs(List<Integer> source, List<Integer> result) {
if (source.size()==0){//判断source是否为空,如果为空则说明source完成了一次排序
if (check()) count++;
}
for (int i=0;i<source.size();i++){
tsource = new ArrayList<>(source);//将source中的值赋给tsource
tresult = new ArrayList<>(result);//tresult
tresult.add(tsource.get(i));//向tresult中加入一个元素
tsource
4000
.remove(i);//并在tsource中删除该元素
dfs(tsource,tresult);
}
}
public static boolean check() //检验是不是相等
{
int a = tresult.get(0);
int b = tresult.get(1);
int c = tresult.get(2);
int d = tresult.get(3);
int e = tresult.get(4);
int f = tresult.get(5);
int g = tresult.get(6);
int h = tresult.get(7);
int i = tresult.get(8);
int j = tresult.get(9);
if (a+c+f+i == a+d+g+j && a+d+g+j == b+c+d+e && b+c+d+e == b+f+h+j&&b+f+h+j == e+g+h+i){
return true;
}
return false;
}
}
相关文章推荐
- 将1~6这6个数字按每行3个进行输出,输出时要求左边的数字比右边的大,上边的数字比下边的大,求出所有可能的填写方法并统计输出排列方法有多少种。
- 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)
- |1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20所有这些字符串,把它的数字一个个剥离??
- 打印如下图案:要求,通过输入不同的参数(比如1、2、3、4...N)该图案可以90°*N的倍数进行顺时针旋转。不需要图形化界面,在控制台中输出即可。注意:图中的“I”为占位符,真实的图形不应该有此符号
- 给定一个数字列表,返回其所有可能的排列。 注意事项 你可以假设没有重复数字。
- TinyOS学习笔记12-节点与计算机利用串口通信2-数据包分析
- 利用线程的知识,要求打印的结果为:1 2 A 3 4 B 5 6 C 7 8 D 9 10 11 12 ... 52 E F G H I J K ... X Y Z
- 一个字符数组,里面的字符可能是a-z、A-Z、0-9.现在要求对数组进行排序,要求所有小写字符放在最前面,所有大写字符放在中间,所有数字放在最后,而且各部分内部分别有序(创新工场)
- 有如图所示的七巧板,试设计算法,使用至多4种不同颜色对七巧板进行涂色(每块七巧板一种颜色),要求相邻区域的颜色互补相同,打印输出所有可能的涂色方案。
- 一个字符数组,里面的字符可能是a-z、A-Z、0-9.现在要求对数组进行排序,要求所有小写字符放在最前面,所有大写字符放在中间,所有数字放在最后,而且各部分内部分别有序。
- 输入两个整数n和m,从数列1,2,3,……n中随意取几个数,使其和等于m。要求将所有的可能组合列出来。实际上就是一个背包问题
- TinyOS学习笔记11-节点与计算机利用串口通信2-BaseStation
- hdu 3434 给你含有n个数的序列,每次你可以选一个子序列将上面所有的数字加1或者减1,目标是把所有数字变成相同的,问最少步数,和那个相同的数字有多少种可能
- 一个字符数组,里面的字符可能是a-z、A-Z、0-9.现在要求对数组进行排序,要求所有小写字符放在最前面,所有大写字符放在中间,所有数字放在最后,而且各部分内部分别有序(创新工场)
- TinyOS学习笔记12-节点与计算机利用串口通信2-数据包分析
- 122345这6个数字,输出它所有可能的组合;要求4不能在第3位,3和5不能相连。
- 给出几个数字,如何用计算机穷举所有可能的算式,加减乘除括号
- 打印如下图案:要求,通过输入不同的参数(比如1、2、3、4...N)该图案可以90°*N的倍数进行顺时针旋转。不需要图形化界面,在控制台中输出即可。注意:图中的“I”为占位符,真实的图形不应该有此符号
- 利用:header匹配所有标题做目录
- 一个正整数有可能可以表示为n(n>=2)个连续的正整数之和,如:15=1+2+3+4+5,15=4+5+6,15=7+8 请编写程序,根据输入的任何一个正整数,找出符合这种要求的所有连续正整数序列。