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);
}
}
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 【非技术】说说2024年我都干了些啥