24点游戏算法, 华为, 全排列

生成4个数的全排列, 和3个操作符的全排列,判断是否运算结果为24。

import java.util.*;
public class Main {
    static boolean res;
    static boolean is24(int[] a, int n, char[] op) {
        int res = a[0];
        for(int i=1; i < n; i++) {
            if(op[i-1] == '+') res += a[i];
            else if(op[i-1] == '-') res -= a[i];
            else if(op[i-1] == '*') res *= a[i];
            else if(a[i] == 0 || res % a[i] != 0) return false;
            else res /= a[i];
        }
        return res == 24;
    }
    static void dfs(int[] a, int n, char[] op, int u){
        if(u == n) {
            if(is24(a, n, op)) 
                res = true;
            return ;
        } 
        for(int i=u; i < n; i++) {
            int t = a[i]; a[i] = a[u]; a[u] = t;
            dfs(a, n, op, u+1);
            t = a[i]; a[i] = a[u]; a[u] = t;
        }
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()) {
            int a = sc.nextInt(), b = sc.nextInt();
            int c = sc.nextInt(), d = sc.nextInt();
            int[] arr = new int[] {a, b, c, d}; 
            char[] op = new char[] {'+', '-', '*', '/'};
            res = false;
            for(int i=0; i < 4; i++) {
                for(int j=0; j < 4; j++) {
                    for(int k=0; k < 4; k++) {
                        char[] t = new char[] {op[i],op[j],op[k]}; 
                        dfs(arr, 4, t, 0);
                        if(res == true){
                            i = j = k = 5; // break;
                        }
                    }
                }
            }
            System.out.println(res);
        }
    }
}

posted @   li修远  阅读(209)  评论(0编辑  收藏  举报
编辑推荐:
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 【非技术】说说2024年我都干了些啥
点击右上角即可分享
微信分享提示