24点程序

本文介绍了24点游戏的程序实现,主要依赖穷举和递归策略。通过利用加法和乘法的交换律来简化运算,并避免在非负数输入时产生负数的中间结果,减少了运算次数。示例代码采用C语言编写,适用于GCC 8编译器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

24点程序主要算法思想是穷举、递归。

其实,24点程序中有一些可用以减少运算次数的小技巧。例如:
相比一般的函数,由于加法和乘法满足交换律,所以参与运算的两个数不必交换位置;
如果输入的数都非负(即是正数或0),则运算的中间过程也不必产生负数,所以做减法运算时,不必考虑被减数小于减数的情况。

C语言(编译器是GCC 8)的代码如下:

#include<stdio.h>

// 要计算的原始数组
#define begin 156,353,485,421,979,383,315,602

// 计算的目标
#define end 24

// 原始数组的长度
#define size sizeof(arr)/sizeof(arr[0])

// 组装b完成,递归。如果找到就记录下来
#define f(o); *b=x o y;if(test(n-1,b)){equation e={x,y,*b,#o[0]};es[c]=e;return 1;}

// 将a下标为[i,j)的一段放入b中
#define g(i, j); for(int k=i;k<j;k++)b[l++]=a[k];

typedef struct {
   
    double left, right, result;//左数,右数,运算结果
    char operator;//运算符
} equation;//等式

double arr[] = {
   begin}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值