社区
C语言
帖子详情
寻求一个24点的算法。
VisionCat
2003-06-18 05:32:13
我想寻求一个C++的24点的算法。
如果有源代码就更好了。
如果有注释,就太好了。
如果能有解释就,最好了。
谢谢
...全文
71
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
打赏
举报
回复
如果分可以再多一些就太好了,呵呵呵呵
“
24点
”的
算法
分析
“
24点
”的
算法
分析楔子论坛上有人在问怎样写计算
24点
的程序。我觉得这个题目挺有趣的,于是就自己写了
一个
。虽然这个程序也能运行,而且还曾帮两个同事解决了他们孩子的作业问题,但是我却并不满意。原因很简单:它虽然能列举出所有可能的组合,但这只是我预先分析的结果。如果给出的数字不是4个,而是5个或6个,那么这段程序就彻底报废了。更重要的是,如果有5个,6个或者更多的数字,事先分析的办法也行不通了
C语言算
24点
本来是用网上的代码来弄算
24点
的,但是发现这个代码只能按照输进去的数字排列进行添加符号,不能转换数字排列的组合,想请教一下我下面的代码要怎么改才可以 #include <stdio.h> char mark[4]={'+','-','*','/'}; float cal(float x, float y, int mark) { switch (mark) { case 0:return x+y; case 1:return x-y;
Point
24点
计算Python编程思路(二)递归思路
24点
计算编程思路 二、
寻求
全部解的递归
算法
分治法是一种循环迭代的
算法
,也可以看成一种递归思路。 Python 递归主程序 recurs24.py 递归的思路逐步降维思路,在代码实现中,程序不断调用自身,每次调用都使大问题规模变小,最后达到退出条件(可以计算的条件)一层层返回直至解决原先的问题。 递归
算法
达到降维作用 采用降低维度的
算法
,即把多维问题降低到二维甚至一维来解决。 比如,给定四个数字 [a, b, c, d],这是
一个
四维问题,我们首先要将其转换为二维问题。 (1) 任取四个数中的两个,有C(
利用深度学习模型基于遗传
算法
(GA)
寻求
最优解
文章目录前言一、各种优化
算法
的优缺点二、深度学习模型+遗传
算法
1.思路2.读入数据总结 前言 深度学习模型的训练前面的文章已经记录过,深度学习-LSTM预测未来值,训练好后的模型如何使用呢?其中
一个
用途就是用来
寻求
最优解,优化
算法
的种类也有很多,本文选用比较经典的遗传
算法
。 一、各种优化
算法
的优缺点 遗传
算法
(GA):遗传
算法
具有良好的全局搜索能力,可以快速地将解空间中的全体解搜索出,而不会陷入局部最优解的快速下降陷阱;并且利用它的内在并行性,可以方便地进行分布式计算,加快求解速度。但是遗传
算法
的局部搜
24
寻求
勾股数
思路基本对,问题出在输出的分号,最后一次输出是不输出分号的; 解决思路:设置0 1,每次重新循环时候就归0,达到要求+1;两者互不影响,后者可以放在最后的循环里 解题思路:暴力解题,三个for循环,在最里面一层输出和判定; 缺点:不够优化,做了很多无用的计算 for(直角边i = 下限;i <= 上线;i++) {...
C语言
70,040
社区成员
243,237
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章