社区
C语言
帖子详情
寻求一个24点的算法。
VisionCat
2003-06-18 05:32:13
我想寻求一个C++的24点的算法。
如果有源代码就更好了。
如果有注释,就太好了。
如果能有解释就,最好了。
谢谢
...全文
38
4
打赏
收藏
寻求一个24点的算法。
我想寻求一个C++的24点的算法。 如果有源代码就更好了。 如果有注释,就太好了。 如果能有解释就,最好了。 谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
pzytony
2003-06-29
打赏
举报
回复
/*在TC2.0下通过,基本实现了24点算法*/
#include<stdio.h>
#include <conio.h>
int enumerate(int ans);
char op[]={'+','-','*','/'};
char *model[]=
{
"((AxB)yC)zD",
"(Ay(BxC))zD",
"Az(By(CxD))",
"Az((BxC)yD)",
"(AxB)z(CyD)"
};
int *A, *B, *C, *D;
char *x, *y ,*z;
int ***opd;
char ***opr;
char *sample;
int **oprand[]={&A,&B,&C,&D};
char **oprator[]={&x,&y,&z};
int a[4];
int main(void)
{
int i;
printf("Enter %d numbers.\n",4);
for(i=0;i<sizeof a/sizeof a[0];i++)
scanf("%d",a+i);
if(enumerate(24)==0)
printf("No solution!\n");
return 0;
}
int calculate()
{
int v1,v2;
char op;
if(*sample=='A'||*sample=='B'||*sample=='C'||*sample=='D')
v1=***opd++;
else if(*sample=='('){
sample++;
v1=calculate();
}
sample++;
while(*sample=='x'||*sample=='y'||*sample=='z'){
op=***opr++;
sample++;
if(*sample=='A'||*sample=='B'||*sample=='C'||*sample=='D')
v2=***opd++;
else if(*sample=='('){
sample++;
v2=calculate();
}
sample++;
//clrscr();
switch(op)
{
case '+': v1+=v2; break;
case '-' : if(v1<v2) return -1000;
else v1-=v2;break;
case '*': v1*=v2; break;
case '/': if(v2==0||v1%v2!=0)
return -1000;
else v1/=v2; break;
}
}
return v1;
}
int enumerate(int ans)
{
int k;
for(A=a;A<a+4;A++)
for(B=a;B<a+4;B++){
if(B==A) continue;
for(C=a;C<a+4;C++){
if(C==A||C==B)
continue;
D=a+6-(A-a)-(B-a)-(C-a);
for(x=op;x<op+4;x++)
for(y=op;y<op+4;y++)
for(z=op;z<op+4;z++)
for(k=0;k<5;k++){
opd=oprand;
opr=oprator;
sample=model[k];
if(calculate()==ans)
{
opd=oprand;
opr=oprator;
sample=model[k];
while(*sample){
switch(*sample)
{
case 'A':
case 'B':
case 'C':
case 'D':printf("%d",***opd++); break;
case 'x':
case 'y':
case 'z':printf("%c",***opr++);break;
case '(':
case ')':printf("%c",*sample);break;
}
*sample++;
}
printf("=24\n\n");
return 1;
}
}
}
}
return 0;
}
smartashuai
2003-06-18
打赏
举报
回复
我不认为哦,这应该是刚学C++的,学会运用一些算法是很好的!
去看http://expert.csdn.net/Expert/TopicView1.asp?id=1915536
我在里面说了很多了。
希望你能自己想想,不要让我再给出全部代码了!
祝好运!
Schlemiel
2003-06-18
打赏
举报
回复
用Python用Python,用C++做这种东西简直就是无聊。
boyfling
2003-06-18
打赏
举报
回复
如果分可以再多一些就太好了,呵呵呵呵
迭代最近点
算法
流程详解(ICP
算法
)
它的目的是
寻求
点集之间的匹配关系,求解的结果是两点集之间的平移及旋转量。假设M、P是两个点集,P为待配准点集,M为基准数据点集(可以理解为两个不同坐标系中的点集),其基本原理如下: 1、搜索最近点:取P中...
最优化
算法
——常见优化
算法
分类及总结
在生活或者工作中存在各种各样的最优化问题,比如每个企业和个人都要考虑的
一个
问题“在一定成本下,如何使利润最大化”等。最优化方法是一种数学方法,它是研究在给定约束之下如何
寻求
某些因素(的量),以使某一...
智能
算法
与传统
算法
智能
算法
寻求
在求解时间和求解速度上的平衡,在可接受的花费(计算时间、占用空间等)下给出待解决优化问题每
一个
实例的
一个
可行解,该可行解与最优解的偏离程度不一定事先可以预计。这类
算法
中的每
一个
算法
都以人类...
不动点
算法
所谓不动点,是指将
一个
给定区域A,经过某种变换f(x),映射到A时,使得x=f(x)成立的那种点。1912年,布劳威尔提出第
一个
不动点定理,即Rn中连续映射的不动点的存在定理,就称之为布劳威尔定理
利用深度学习模型基于遗传
算法
(GA)
寻求
最优解
其中
一个
用途就是用来
寻求
最优解,优化
算法
的种类也有很多,本文选用比较经典的遗传
算法
。 一、各种优化
算法
的优缺点 遗传
算法
(GA):遗传
算法
具有良好的全局搜索能力,可以快速地将解空间中的全体解搜索出,而不会...
C语言
69,382
社区成员
243,073
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章