package com.wgtgt; import java.util.Arrays; import java.util.HashSet; import java.util.Iterator; public class A24Point { private static HashSet<String>set=new HashSet<String>(); /** * @Title: 24点计算器 * @Description: 24点计算器 * @author 冰水华川 * @date 2014-06-05 15:32 */ public static void main(String[] args) { // int[]nums={5,5,5,1}; // int[]nums={3,3,8,8}; // int[]nums={3,4,4,9}; // int[]nums={4,6,9,11}; // int[]nums={2,2,7,9}; int[]nums={4,5,7,8}; // int[]nums={3,4,6,9}; // int[]nums={3,4,5,10}; total(nums); print(set); } public static void total(int[]nums) { Arrays.sort(nums); int count=equalsCount(nums); int a=nums[0]; int b=nums[1]; int c=nums[2]; int d=nums[3]; if(count==0){ main(new int[]{a,b,c,d}); main(new int[]{a,b,d,c}); main(new int[]{a,c,b,d}); main(new int[]{a,c,d,b}); main(new int[]{a,d,b,c}); main(new int[]{a,d,c,b}); main(new int[]{b,c,d,a}); main(new int[]{b,c,a,d}); main(new int[]{b,d,a,c}); main(new int[]{b,d,c,a}); main(new int[]{b,a,c,d}); main(new int[]{b,a,d,c}); main(new int[]{c,d,a,b}); main(new int[]{c,d,b,a}); main(new int[]{c,a,b,d}); main(new int[]{c,a,d,b}); main(new int[]{c,b,a,d}); main(new int[]{c,b,d,a}); }else if(count==1){ int m=0;//相同 int p=0; int q=0; if(a==b){ m=a; p=c; q=d; main(new int[]{m,m,p,q}); main(new int[]{m,m,q,p}); }else if(b==c){ m=b; p=a; q=d; main(new int[]{p,m,m,q}); main(new int[]{q,m,m,p}); }else if(c==d){ m=c; p=a; q=b; main(new int[]{p,q,m,m}); main(new int[]{q,p,m,m}); } }else if(count==4){ int m=a; int n=c; main(new int[]{m,m,n,n}); main(new int[]{n,n,m,m}); main(new int[]{m,n,m,n}); main(new int[]{n,m,n,m}); }else if(count==2){ int m=0;//相同的 int n=0;//单独的 if(a==b){ m=a; n=d; }else if(c==d){ m=d; n=a; } main(new int[]{m,m,m,n}); main(new int[]{m,m,n,m}); main(new int[]{m,n,m,m}); main(new int[]{n,m,m,m}); }else if(count==3){ main(new int[]{a,b,c,d}); } } public static int equalsCount(int[]nums){ int count=0; for (int i = 0; i < nums.length-1; i++) { if(nums[i]==nums[i+1]){ count++; } } if(count==2){ if(nums[0]==nums[1]){ return 4; }else if(nums[1]==nums[2]){ return 2; } } return count; } public static void main(int[]nums) { double a=nums[0]; double b=nums[1]; double c=nums[2]; double d=nums[3]; double sum=0; for (int i = 0; i < 6; i++) { for (int j = 0; j < 6; j++) { for (int k = 0; k < 6; k++) { sum=op(op(op(a,b,i),c,j),d,k); if(sum>23.999&&sum<24.001){ set.add(format(i,j,k,a,b,c,d)); } } } } } public static double op(double a,double b,int n){ switch (n) { case 0: return a+b; case 1: return a-b; case 2: return b-a; case 3: return a*b; case 4: return a/b; case 5: return b/a; default: throw new RuntimeException("--yichang--"); } } public static String format(int i,int j,int k,double a,double b,double c,double d){ StringBuilder sb=new StringBuilder(); sb.append(format(format(format(new StringBuilder(valueOf(a)),new StringBuilder(valueOf(b)),i),new StringBuilder(valueOf(c)),j),new StringBuilder(valueOf(d)),k)); return sb.toString(); } private static String valueOf(double b) { String result=String.valueOf(b); if(result.endsWith(".0")){ return result.substring(0,result.length()-2); } return result; } private static StringBuilder format(StringBuilder a,StringBuilder b,int n){ StringBuilder sb=new StringBuilder(); switch (n) { case 0: sb.append('('); sb.append(a); sb.append('+'); sb.append(b); sb.append(')'); return sb; case 1: sb.append('('); sb.append(a); sb.append('-'); sb.append(b); sb.append(')'); return sb; case 2: sb.append('('); sb.append(b); sb.append('-'); sb.append(a); sb.append(')'); return sb; case 3: sb.append(a); sb.append('*'); sb.append(b); return sb; case 4: sb.append('('); sb.append(a); sb.append('/'); sb.append(b); sb.append(')'); return sb; case 5: sb.append('('); sb.append(b); sb.append('/'); sb.append(a); sb.append(')'); return sb; default: throw new RuntimeException("--yichang--"); } } private static void print(HashSet<String>set){ if(set.size()==0){ System.out.println("无解"); return; } Iterator<String>ite=set.iterator(); while(ite.hasNext()){ String str=ite.next(); System.out.println(str); } } }
最近下载更多
怪浪鱼 LV2
2021年12月8日
liangby123 LV1
2021年7月26日
1307027430 LV1
2021年7月16日
2196316269 LV10
2021年2月25日
华灯初上旧人安 LV8
2021年1月11日
ecodemo LV2
2021年1月9日
name11 LV1
2020年6月21日
zmzdmw LV1
2020年6月19日
zhinian2 LV1
2020年6月17日
1305700518 LV1
2020年6月10日
最近浏览更多
EFWAGGFAWGR
2023年10月19日
暂无贡献等级
lironggang LV38
2023年3月26日
crosa_Don LV18
2022年7月19日
floweyws LV6
2022年6月3日
liangge2115 LV27
2022年3月11日
怪浪鱼 LV2
2021年12月8日
gonnass LV1
2021年10月22日
liangby123 LV1
2021年7月26日
1307027430 LV1
2021年7月16日
1111545454654 LV3
2021年7月4日