当前位置: 首页 > Web前端 > JavaScript

快速扑克计算24-穷举(JavaScript)

时间:2023-03-27 12:43:55 JavaScript

从扑克牌中随机抽取4张牌(不重复)A(1)2345678910J(11)Q(12)K(13),请给出4个操作,一个算法使得结果24并在计算中使用每个数字一次。如果按上述规则不能得到24,则输出“24无法计算”。如果给定4个数为2345,程序输出应该是一个表达式:(5+3-2)*4要求:提交算法思路即可。思路:首先分析一下穷举包括了多少种情况:1.操作数。由于是给定的4张牌,所以4张牌排满了,有24种2和运算符。4个号码之间有3个运算符,每个运算符有4种选择,共:64种3.运算符优先级。一共:5种统计以上情况一共应该有:24645=7680种,即如果用a,b,c,d来表示这四种数,&表示某个运算符,优先级仍然用括号表示,那么只需要分别考虑以下形式:1.(a&b)&(c&d)2.((a&b)&c)&d3.(a&(b&c))&d4.a&(b&(c&d))5.a&((b&c)&d)##解题代码constget24=(str)=>{letarr=str.split('')lettransfer=(v)=>{switch(v){case'A':return1case'J':return11case'Q':return12case'K':return13default:returnNumber(v)}}//1.转换为实数letnums=[]for(leti=0;i{if(start===nums.length){ans.push(path.slice())返回}for(设i=0;i0&&nums[i]===nums[i-1]&&!used[i-1])){继续;}path.push(nums[i])used[i]=truebackTracing(start+1,path)used[i]=falsepath.pop()}}nums.sort((a,b)=>a-b)backTracing(0,[])/**///3.选择路径-穷举letdict=['+','-','*','/']for(leti=0;i