24点算法大全
(3/7+3)*7=24
下面是我自己写的一个程序:
我的解法是把这个问题分解成了两个子问题,首先求出4个数字的无重复全排列,放到一个数组里面,再对没一个排列情况,从头到尾穷举所有的四则运算情况。注意到除法是特殊的,我用x/y表示x除以y,用x|y表示x分之y。注意到,如果穷举的解得到-24的话,只需要把有减法的地方调换一下顺序就可以了,代码如下
/***********************************************************************************/
#include
#include
#include
#include
int index[4]={0,1,2,3};//used to generate subscription collection
int sub[4]; //used in p() only
float f[4]={8.0f,3.0f,3.0f,8.0f};//the 24 point numbers
float fs[24][4];//all possible permutaions of f
float tmp[4]; //used for buf
int g_number=0; //number of permutations
float RES[4];
char op[3];
void p(int idx){//求全排列的函数
if(idx==4){
for(int i=0;i<4;++i){tmp[i]=f[sub[i]];}
for(int g=0;g<g_number;++g){if(memcmp(fs[g],tmp,sizeof(float)*4)==0)return;}
for(int i=0;i<4;++i){fs[g_number][i]=f[sub[i]];}
g_number++;
return;
}
for(int i=0;i<4;++i){//make subscription collections
bool dupflag=false;
for(int j=0;j<idx;++j){if(sub[j]==i)dupflag=true;}
if(dupflag==true)continue;
sub[idx]=index[i];
p(idx+1);
}
}
void solve(int L){//对某个排列,递归求所有四则运算的结果,找到就退出
if(L==3){
if(fabs(fabs(RES[L])-24.0f)<0.01f){
printf("Found solution,RES=%f,((%d%c%d)%c%d)%c%d
",RES[L],
(int)f[0],op[0],
(int)f[1],op[1],
(int)f[2],op[2],
(int)f[3]);
exit(0);
}
return;
}
for(int j=0;j<5;++j){//j judges for operators
if(j==0){RES[L+1]=RES[L]+tmp[L+1];op[L]='+';solve(L+1);}
if(j==1){RES[L+1]=RES[L]-tmp[L+1];op[L]='-';solve(L+1);}
if(j==2){RES[L+1]=RES[L]*tmp[L+1];op[L]='*';solve(L+1);}
if(j==3&&tmp[L+1]!=0)
{RES[L+1]=RES[L]/tmp[L+1];op[L]='/';solve(L+1);}
if(j==4&&RES[L+1]!=0)
{RES[L+1]=tmp[L+1]/RES[L];op[L]='|';solve(L+1);}
}
}
int main(int argc,char* argv[]){//should avoid 0
f[0]=atoi(argv[1]);
f[1]=atoi(argv[2]);
f[2]=atoi(argv[3]);
f[3]=atoi(argv[4]);
p(0);
for(int i=0;i<g_number;++i){
memcpy(tmp,fs[i],sizeof(float)*4);
RES[0]=tmp[0];
for(int t=0;t<4;++t){ printf("%d,",(int)tmp[t]); }
printf("
");
solve(0);
}
printf("Found no solution :(
");
return 0;
}
----------编译运行,运行时的参数就是4个数字
g++ p.cpp && ./a.out 1 5 5 5
1,5,5,5,
Found solution,RES=-24.000000,((1/5)-5)*5
g++ p.cpp && ./a.out 8 3 3 8
8,3,3,8,
Found solution,RES=-24.000006,((8/3)-3)|8
上面这个解写出来就是
8
--------- = 24
3-(8/3)
主程序为了简化,省去了对输入的检查,楼主可以自己添加。
(3*7)+(7-4)
(3/7+3)*7
38--44
24点算法:有3、4、13、6四个数每数用一次进行加减乘除后等于24?_百 ...
回答:确定有解吗
七点8×4点876的简便算法
七点8×4点876的简便算法 七点8×4点876 = 38.0328 没有简算 直接计算
美国GPA算法中4.0是相当于百分制的多少?
相当于百分之84。普通算法:百分制中的90分以上可视为4分,80分以上 为3分,70分以上为2分,60分以上为1分。标准算法:加权平均分除以一百再乘以4。
我是1986年农历10月初7,下午4点多出生,用称骨的算法是几量几钱
1986丙寅 6钱 十月 8钱 初七 8钱 申时 8钱 0.6+0.8+0.8+0.8=3两 http:\/\/baike.baidu.com\/view\/3205806.htm?fr=aladdin
4.9.4.4.二十四点怎么箅?
(9-4)×4+4 =5×4+4 =24 所以4、9、4、4二十四点算法为(9-4)×4+4=24
如何实现3点4点和5点的FFT算法?有知道的麻烦讲一下感激不尽啊!_百度...
FFT 用于 2 的 整数次方 的 点数 的 时序 信号 做快速 傅里叶 变换。一般要求输入 大量的 时序点 例如几百几千点,计算 谱。 没听说过 用于 3,4,5 点的。当然,你可以用 内插法,把它插成 512 点,1024点 后再 做 FFT. 不过,有无实用价值不知道了。
有4张扑克牌点数分别是5.4.3.1.经过怎样的运算才能得到24呢?请至少写...
你好!用1,3,4,5算24点,共有52种算法。[﹙4×5﹚+3]+1 [5-﹙1-4﹚]×3 [﹙5+4﹚-1]×3 3×[4-﹙1-5﹚]﹙3+1﹚+﹙5×4﹚[5×﹙1+3﹚]+4 [4-﹙1-5﹚]×3 4+[﹙1+3﹚×5]3×[﹙5-1﹚+4]4+[5×﹙3+1﹚]﹙4-1﹚×﹙3+5﹚3×[﹙5...
五点1×4点7+5点9×4点9-4点九的简便算法是啥
五点1×4点7+5点9×4点9-4点九的简便算法是啥 五点1×4点7+5点9×4点9-4点九 =4.9*(5.1+5.9-1)=4.9*10 =49
2,4,6,10,二十四点算法
2乘以4等于8 8加6等于14 14加10等于24
四分位数详细资料大全
与中位数不同的是,四分位数位置的确定方法有几种,每种方法得到的结果会有一定差异,但差异不会很大。基本介绍 中文名 :四分位数 外文名 :quartile 属性 :统计学中将排列的数字分为四等分 套用 :统计学中的箱线图绘制 相关算法 :将n个数进行排列 示例 :必须先确定四分...
子丰友硫磺:[答案] 用2,9,10,10算24点,共有12种算法. 10+[9+﹙10÷2﹚] 9+[10+﹙10÷2﹚] ﹙9+10﹚+﹙10÷2﹚ [9+﹙10÷2﹚]+10 [﹙10÷2﹚+9]+10 ﹙10÷2﹚+﹙9+10﹚ 10+[﹙10÷2﹚+9] 9+[﹙10÷2﹚+10] [﹙10÷2﹚+10]+9 [10+﹙10÷2﹚]+9 ﹙10+9﹚+﹙10÷2﹚ ﹙10÷2...
杂多县13916876801: 24点计算方法 - ?
子丰友硫磺:[答案] 很简单就是:凑数24=15+9=25-1=12*2=96/4等等,还有些特殊运算符,举例如下5÷5=11.常规方法:5*(5-1/5)2.几个特殊运算:(5-5/5*1)!=4!=4*3*2*1=24(5-1*5/5)!1*(5-5/5)!(5-1)!*5/5 5!/(5+5mod1)=5!/(5+0) √5 * √5 *5...
杂多县13916876801: 24点计算方法 - ?
子丰友硫磺: 很简单就是:凑数 24=15+9=25-1=12*2=96/4等等,还有些特殊运算符,举例如下 5÷5=1 1. 常规方法: 5*(5-1/5) 2. 几个特殊运算: (5-5/5*1)!=4!=4*3*2*1=24 (5-1*5/5)! 1*(5-5/5)! (5-1)!*5/5 5!/(5+5mod1)=5!/(5+0) √5 * √5 *5-1
杂多县13916876801: 有没有快速算24点的方法? - ?
子丰友硫磺: 算24点一般利用以下三个算式:8*3、6*4、12*2.
杂多县13916876801: 1 3 9 10四张牌算24点 - ?
子丰友硫磺:[答案] 你好!24点游戏规则:每个数字只用一次,但可以调换顺序,只允许加、减、乘、除等四则运算,可以使用括号改变运算顺序. 用1,3,9,10算24点,共有4种算法. [3*﹙10+1﹚]-9 [3*﹙1+10﹚]-9 [﹙1+10﹚*3]-9 [﹙10+1﹚*3]-9
杂多县13916876801: 4.5.6.12.怎么算24点 - ?
子丰友硫磺:[答案] 用4,5,6,12算24点,共有16种算法. ﹙6+4﹚*﹙12÷5﹚ 12*[﹙6+4﹚÷5] [12*﹙4+6﹚]÷5 ﹙6+4﹚÷﹙5÷12﹚ ﹙4+6﹚÷﹙5÷12﹚ 12÷[5÷﹙4+6﹚] ﹙4+6﹚*﹙12÷5﹚ ﹙12÷5﹚*﹙6+4﹚ ﹙12÷5﹚*﹙4+6﹚ [﹙4+6﹚*12]÷5 12÷[5÷﹙6+4﹚] [﹙4+6﹚÷5]*...
杂多县13916876801: 用2、3、4、6这四张牌上的数算“24”点,你能想出五种算法吗?用算式表示出来. - ?
子丰友硫磺:[答案] 2+4+(3*6)=24 2*6+4*3=24 (2*4)*(6-3)=24 (3-2)*4*6=24 6*4/(3-2)=24 ((4+2)*3)+6=24 (4-2+6)*3=24 (6*2-4)*3=24 ((6-3)*2)*4=24
杂多县13916876801: 求二十四点的算法~(要看内容)注意:是要带有负数的,如: - 2,5, - 6, - 1是要求带有负数的二十四点的算法, - ?
子丰友硫磺:[答案] (-6*10)/3-4=-24 3*(10-6+4)=24 -6*3-10+4=-24 3*(10+4-6)=24 (3*4-10)²*(-6) =-24
杂多县13916876801: 24点算法14561 4 5 6 算24点 - ?
子丰友硫磺:[答案] (4÷(1-(5÷6)))=24 (6÷((5÷4)-1))=24