社区
图形处理/算法
帖子详情
24点算法,送分哦?
forrest_wang
2002-05-13 11:33:51
我现在在做一个24点的程序,但就是算法不好,太复杂了,谁有好的算法啊,提供来参考一下,有分哦!
...全文
70
6
打赏
收藏
24点算法,送分哦?
我现在在做一个24点的程序,但就是算法不好,太复杂了,谁有好的算法啊,提供来参考一下,有分哦!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
OpenVMS
2002-05-16
打赏
举报
回复
5年前做过个,递归分解求表达式
forrest_wang
2002-05-16
打赏
举报
回复
怎么就没有了!!!
forrest_wang
2002-05-14
打赏
举报
回复
我没有这本书啊,传上来看看啊
bigcgq
2002-05-14
打赏
举报
回复
各位有没有看过95年的软件报合订本,那里头有的。嘿嘿........
forrest_wang
2002-05-14
打赏
举报
回复
楼上的兄弟,谢了,算法不错,和我想的很象。大家都来啊,还有更好的都拿出来啊!!
xuying
2002-05-13
打赏
举报
回复
给你的源程序看看,用递归。
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
const double PRECISION = 1E-6;
const int COUNT_OF_NUMBER = 4;
const int NUMBER_TO_BE_CAL = 24;
double number[COUNT_OF_NUMBER];
string expression[COUNT_OF_NUMBER];
bool Search(int n)
{
if (n == 1) {
if ( fabs(number[0] - NUMBER_TO_BE_CAL) < PRECISION ) {
cout << expression[0] << endl;
return true;
} else {
return false;
}
}
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
double a, b;
string expa, expb;
a = number[i];
b = number[j];
number[j] = number[n - 1];
expa = expression[i];
expb = expression[j];
expression[j] = expression[n - 1];
expression[i] = '(' + expa + '+' + expb + ')';
number[i] = a + b;
if ( Search(n - 1) ) return true;
expression[i] = '(' + expa + '-' + expb + ')';
number[i] = a - b;
if ( Search(n - 1) ) return true;
expression[i] = '(' + expb + '-' + expa + ')';
number[i] = b - a;
if ( Search(n - 1) ) return true;
expression[i] = '(' + expa + '*' + expb + ')';
number[i] = a * b;
if ( Search(n - 1) ) return true;
if (b != 0) {
expression[i] = '(' + expa + '/' + expb + ')';
number[i] = a / b;
if ( Search(n - 1) ) return true;
}
if (a != 0) {
expression[i] = '(' + expb + '/' + expa + ')';
number[i] = b / a;
if ( Search(n - 1) ) return true;
}
number[i] = a;
number[j] = b;
expression[i] = expa;
expression[j] = expb;
}
}
return false;
}
void main()
{
for (int i = 0; i < COUNT_OF_NUMBER; i++) {
char buffer[20];
int x;
cin >> x;
number[i] = x;
itoa(x, buffer, 10);
expression[i] = buffer;
}
if ( Search(COUNT_OF_NUMBER) ) {
cout << "Success." << endl;
} else {
cout << "Fail." << endl;
}
}
24点
算法
讲解与实现
题目描述:在52张扑克牌中(去掉大小王),随机抽取4张牌,找到所有可能的情况和解。 前言 博主曾在网上看到有很多关于
24点
的
算法
,但很多都是没有找全所有表达式,要么就是没有去重,而且搜索的时间过长,有些慢的要半个小时才能得到结果。所以经过我的不懈努力,经过几天的研究,目前我的这个
24点
的
算法
能够高效的找出所有解的情况。经过测试,平均在0.1几秒左右就可以找到所有情况。
C++
24点
游戏
算法
原题链接:
24点
游戏
算法
_牛客题霸_牛客网 描述 给出4个1-10的数字,通过加减乘除运算,得到数字为24就算胜利,除法指实数除法运算,运算符仅允许出现在两个数字之间,本题对数字选取顺序无要求,但每个数字仅允许使用一次,且需考虑括号运算 此题允许数字重复,如3 3 4 4为合法输入,此输入一共有两个3,但是每个数字只允许使用一次,则运算过程中两个3都被选取并进行对应的计算操作。 输入描述: 读入4个[1,10]的整数,数字允许重复,测试用例保证无异常数字。 输出描述: 对于每组案例,输出一行表
24点
游戏
算法
题目描述: 给出4个1-10的数字,通过加减乘除,得到数字为24就算胜利 输入描述: 输入4个int整数(数字允许重复,但每个数字仅允许使用一次,无异常数字) 输出描述: 返回能否得到
24点
,能输出true,不能输出false 示例1、 输入: 7 2 1 10 输出: true 当第一次读到题目后自己的解法如下: import itertools while True: try: nums, flag = input().sp..
24点
游戏
算法
分析
一:题目分析 从扑克中每次取出4张牌。使用加减乘除,第一个能得出24者为赢。(其中,J代表11,Q代表12,K代表13,A代表1),按照要求编程解决
24点
游戏。 基本要求: 随机生成4个代表扑克牌牌面的数字字母,程序自动列出所有可能算出24的表达式 ...
经典
24点
程序
算法
经典
24点
程序
算法
叶宏 bcbplc@qq.com 一、概述 算
24点
:任意给定四个整数,用加、减、乘、除以及适当的括号连接,无论顺序,使计算结果为24,也可能根本就无解。如何用程序简单实现找到算式是程序初学者关注的问题,百度上可以搜到许多这样的文章,有递归法、回溯法、穷举法。但穷举法最为简单、易于理解。 二、
算法
穷举法就是把四个数字的所有运算式进行尝试计算,要设法把所有排列
图形处理/算法
19,464
社区成员
50,678
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章