题解 | #24点运算#

24点运算

http://www.nowcoder.com/practice/7e124483271e4c979a82eb2956544f9d

import java.io.*;
import java.util.*;
public class Main {
    private static String[] op = new String[]{"+","-","*","/"};
    public static void main(String[] args)throws IOException{
        BufferedReader re = new BufferedReader(new InputStreamReader(System.in));
        String input;
        while((input = re.readLine())!=null && !"".equals(input)){
            String[] ss = input.split(" ");
            int a = getInputNum(ss[0]);
            int b = getInputNum(ss[1]);
            int c = getInputNum(ss[2]);
            int d = getInputNum(ss[3]);
            if(a== -1 || b==-1 ||c == -1||d == -1){
                System.out.println("ERROR");
                continue;
            }
            compute(a,b,c,d);
        }
    }
    public static int getInputNum(String str){
        switch(str.toUpperCase()){
            case "A":
                return 1;
            case "J":
                return 11;
            case "Q":
                return 12;
            case "K":
                return 13;
            case "JOKER":
                return -1;
            default:
                return Integer.parseInt(str);
        }
    }
    public static void compute(int a,int b,int c,int d){
        int[]arr = {a,b,c,d};
        String[][] arr1 = symbol();
        for(int i =0;i<4;i++){
            for(int j =0;j<4;j++){
                for(int k =0;k<4;k++){
                    for(int p =0;p<4;p++){
                        if((i!=j)&&(i!=k)&&(i!=p)&&(j!=k)&&(j!=p)&&(k!=p)){
                            for(String[]str :arr1){
                                int sum =sumNum(arr[i],arr[j],str[0]);
                                sum =sumNum(sum,arr[k],str[1]);
                                sum =sumNum(sum,arr[p],str[2]);
                                if(sum == 24){
                                    String str1=getInputString(arr[i])+str[0]+getInputString(arr[j])+str[1]+getInputString(arr[k])+str[2]+getInputString(arr[p])+"";
                                    System.out.println(str1);
                                    return;
                                }
                            }
                        }
                    }
                }
            }
        }
        System.out.println("NONE");
    }
    public static String getInputString(int i){
        switch(i){
            case 1:
                return "A";
            case 11:
                return "J";
            case 12:
                return "Q";
            case 13:
                return "K";
            default:
                return String.valueOf(i);
        }
    }
    public static  String[][]symbol(){
        String[][] symbol = new String[64][3];
        int p = 0;
        for(int i =0;i<4;i++){
            for(int j =0;j<4;j++){
                for(int k =0;k<4;k++){
                    symbol[p++] = new String[]{op[i],op[j],op[k]};
                }
            }
        }
        return symbol;
    }
    public static int sumNum(int a,int b,String symb){
        switch(symb){
                case "+":
                    return a+b;
                case "-":
                    return a-b;
                case "*":
                    return a*b;
                case "/":
                    return a/b;
                default:
                    return 0;
                
        }
    }
}
全部评论

相关推荐

斑驳不同:还为啥暴躁 假的不骂你骂谁啊
点赞 评论 收藏
分享
Yushuu:你的确很厉害,但是有一个小问题:谁问你了?我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了😆
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务