您的位置:首页 > 编程语言 > Java开发

第七届蓝桥杯javaB组真题解析-凑算式(第三题)

2018-03-15 11:12 399 查看
凑算式     B      DEF
A + --- + ------- = 10
     C      GHI
    
(如果显示有问题,可以参见【图1.jpg】)
 
 
这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。比如:
6+8/3+952/714 就是一种解法,
5+3/1+972/486 是另一种解法。这个算式一共有多少种解法?注意:你提交应该是个整数,不要填写任何多余的内容或说明性文字。
采用全排列的算法 还是不太懂 但是本题需要注意的是要将int型隐形转换成double类型 因为3/2=1而不是1.5还有一种暴力破解法 稍后再做整理吧

import java.util.*;
public class Main{
static int sum =0 ;
static void f(int[]aa, int k){
if(k==aa.length-1){
if(aa[0]+aa[1]*1.0/aa[2]+(aa[3]*100+aa[4]*10+aa[5])*1.0/(aa[6]*100+aa[7]*10+aa[8])-10 ==0){
sum +=1;
//				System.out.println(aa[0]+""+aa[1]+aa[2]+aa[3]+aa[4]+aa[5]+aa[6]+aa[7]+aa[8]);
}
//			System.out.println(aa[0]+""+aa[1]+aa[2]);
return;
}
for(int i=k; i<aa.length; i++){
{int t=aa[k]; aa[k]=aa[i];aa[i]=t;}//试探
f(aa,k+1);
{int t=aa[k]; aa[k]=aa[i];aa[i]=t;}//回溯
}
}
public static void main(String [] args){
int aa [] = {1,2,3,4,5,6,7,8,9};
//		int aa [] = {1,2,3};
f(aa,0);
System.out.println(sum);
}
}
补充:全排列递归算法例如:abc首先锁定第一位 对bc进行全排列 得 a bc ; a cb将a和b交换 锁定第一位b 得 b ac ; b ca;不断的进行递归排序得到最终的全排列
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  蓝桥