B DEF
A + --- + ------- = 10
C GHI
这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。
比如:
6+8/3+952/714 就是一种解法,
5+3/1+972/486 是另一种解法。
这个算式一共有多少种解法?
注意:你提交应该是个整数,不要填写任何多余的内容或说明性文字。
8 952
6 + --- + ------- = 10
3 714
3 972
5 + --- + ------- = 10
1 486
如果有大神路过,希望大神给个思路,思路最好详细一点,如果给代码的话,希望不要太复杂。。。
其实这个题目是蓝桥杯上一届的原题,如果各位兄弟朋友有题目的答案,那更是感激不尽了

12 个解决方案
#1
递归,全排列,然后再加条件过滤剪枝。
#2
全排列的话有多少种排列方式啊,电脑都吃不消
#3
好吧,我试了一下,算的很快,29种解法
#4
public class Lqb {
public static double value=0;
public static int count=0;
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] a={1,2,3,4,5,6,7,8,9};
long s=System.currentTimeMillis();
permutation(0,a.length-1,a);
System.out.println("共有"+count+"种");
System.out.println("耗时"+(System.currentTimeMillis()-s));
}
private static void permutation(int s, int e, int[] a) {
// TODO Auto-generated method stub
if(s==e){
operation(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8]);
}else{
for(int i=s;i<=e;i++){
int t=a[s];
a[s]=a[i];
a[i]=t;
permutation(s+1,e,a);
a[i]=a[s];
a[s]=t;
}
}
}
private static void operation(int a, int b, int c, int d, int e, int f, int g, int h, int i) {
// TODO Auto-generated method stub
value=a+1.0*b/c+1.0*Integer.parseInt(""+d+e+f)/Integer.parseInt(""+g+h+i);
if(value==10){
count++;
System.out.println(" "+b+" "+d+e+f);
System.out.println(a+"+---+-------=10");
System.out.println(" "+c+" "+g+h+i);
System.out.println("\n");
}
}
}
此楼49分;可以结贴了
#5

#6
正解正解,牛批牛批
#7
#8
#9
#10
#11
第一个数字一定是整数
第二和第三个数组成的分数中的分母很重要,因为它决定了下一个分母的模
以上两数相加减十是后六位应该生成的值,并且分母与前一个分母同模。
就是不知道这样会不会比五楼的更快
第二和第三个数组成的分数中的分母很重要,因为它决定了下一个分母的模
以上两数相加减十是后六位应该生成的值,并且分母与前一个分母同模。
就是不知道这样会不会比五楼的更快
#12
对于计算机,这点计算量不算大吧。。
#1
递归,全排列,然后再加条件过滤剪枝。
#2
全排列的话有多少种排列方式啊,电脑都吃不消
#3
好吧,我试了一下,算的很快,29种解法
#4
public class Lqb {
public static double value=0;
public static int count=0;
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] a={1,2,3,4,5,6,7,8,9};
long s=System.currentTimeMillis();
permutation(0,a.length-1,a);
System.out.println("共有"+count+"种");
System.out.println("耗时"+(System.currentTimeMillis()-s));
}
private static void permutation(int s, int e, int[] a) {
// TODO Auto-generated method stub
if(s==e){
operation(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8]);
}else{
for(int i=s;i<=e;i++){
int t=a[s];
a[s]=a[i];
a[i]=t;
permutation(s+1,e,a);
a[i]=a[s];
a[s]=t;
}
}
}
private static void operation(int a, int b, int c, int d, int e, int f, int g, int h, int i) {
// TODO Auto-generated method stub
value=a+1.0*b/c+1.0*Integer.parseInt(""+d+e+f)/Integer.parseInt(""+g+h+i);
if(value==10){
count++;
System.out.println(" "+b+" "+d+e+f);
System.out.println(a+"+---+-------=10");
System.out.println(" "+c+" "+g+h+i);
System.out.println("\n");
}
}
}
此楼49分;可以结贴了
#5

#6
正解正解,牛批牛批
#7
#8
#9
#10
#11
第一个数字一定是整数
第二和第三个数组成的分数中的分母很重要,因为它决定了下一个分母的模
以上两数相加减十是后六位应该生成的值,并且分母与前一个分母同模。
就是不知道这样会不会比五楼的更快
第二和第三个数组成的分数中的分母很重要,因为它决定了下一个分母的模
以上两数相加减十是后六位应该生成的值,并且分母与前一个分母同模。
就是不知道这样会不会比五楼的更快
#12
对于计算机,这点计算量不算大吧。。