递归算24点

使用递归算24点

#include<iostream>
#include<cmath>
using namespace std;
double a[4];
const double eps = 1e-3;
int result(int n)
{
    int i, j;
    double p, q;
    if (n == 1)
    {
        if (fabs(a[0] - 24) < eps)
            return 1;
        else
            return 0;
    }
    for (i = 0; i < n - 1; i++)
        for (j = i + 1; j < n; j++)
        {
            p = a[i]; 
            q = a[j];
            a[j] = a[n - 1];
            a[i] = p + q;
            if (result(n - 1)) 
                return 1;
            a[i] = p - q;
            if (result(n - 1)) 
                return 1;
            a[i] = q - p;
            if (result(n - 1)) 
                return 1;
            a[i] = p * q;
            if (result(n - 1)) 
                return 1;
            if (q != 0)
            {
                a[i] = p / q;
                if (result(n - 1)) 
                    return 1;
            }
            if (p != 0)
            {
                a[i] = q / p;
                if (result(n - 1)) 
                    return 1;
            }
            a[i] = p; 
            a[j] = q;
        }
    return 0;
}
int main()
{
    int i;
    while ((cin >> a[0] >> a[1] >> a[2] >> a[3]) && (a[0] + a[1] + a[2] + a[3] != 0))
    {
        if (result(4))
            cout << "YES" << endl;
        else
            cout << "NO" << endl;
    }
    return 0;
}


打表

#include <stdio.h>
char res[] =
{
0x00,0x00,0x00,0x00,0x02,0x02,0x00,0x00,0x80,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x80,0xF0,0x78,0x38,0x1C,0x06,0x03,0x80,0x40,0x00,0x00,0x20,0x20,0x2B,0x1A,0x80,0x63,0xAC,0x10,0x5E,0x84,0x80,0x08,0x0F,0x0A,0xC3,0x73,0xAC,0x43,0x6B,0x94,0xAF,0xFD,0xF2,0x02,0x01,0xE1,0xA8,0xEB,0x37,0x92,0x8F,0xFD,0x2A,0x7B,0x84,0x80,0x00,0x38,0x01,0x84,0x34,0xA1,0x00,0x4A,0x48,0x03,0x08,0x48,0x08,0x07,0x03,0xAD,0xAE,0xFF,0xD2,0x93,0xC0,0x60,0x38,0x4B,0x30,0x00,0x60,0x04,0x14,0xA4,0xA8,0x80,0x18,0x00,0x01,0x84,0x02,0x10,0x0E,
0x05,0xEB,0xFF,0x7B,0x8C,0x23,0x84,0x61,0x3C,0x84,0xC0,0x00,0x40,0x12,0x1F,0x21,0x20,0x48,0x2C,0xC0,0x21,0x30,0x08,0x00,0x00,0x00,0x08,0x0F,0x07,0x83,0x81,0xC0,0x60,0x38,0x04,0x00,0x00,0x02,0x03,0xC3,0xF1,0xFC,0x7E,0x3E,0xCF,0x07,0xE8,0xE8,0x00,0x80,0xF0,0xFC,0x7F,0x3F,0xCF,0xF7,0xFD,0xFF,0xFF,0xDF,0xE0,0x3C,0x3F,0x1F,0xCF,0xF7,0xFD,0xEF,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x87,0xF3,0xFD,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xDF,0xE0,0xE0,0x7E,0x3F,0xDE,0xFF,0xFF,0xB9,0xFF,0xDE,0xB7,0xBC,0xFF,0x1C,0x0F,0xB7,0xFF,
0xFF,0xFF,0xFF,0xF7,0xEC,0xF1,0x7E,0xDF,0xF1,0x80,0xF0,0x7F,0xFF,0xFF,0xFD,0xEB,0x3C,0x4E,0x13,0xCC,0xFF,0x38,0x1F,0xAF,0xFF,0xFF,0xFF,0xDE,0xF7,0xEC,0xF3,0x7F,0xCF,0xE1,0x00,0xE8,0x7F,0xBF,0xF7,0xF8,0xFF,0x7F,0xCF,0xF3,0xF8,0x5C,0x00,0x00,0x20,0x20,0x2B,0x1A,0x80,0x63,0xAC,0x10,0x5E,0x84,0x80,0x08,0x0F,0x0F,0xC7,0xF3,0xFC,0xFF,0x7F,0xDF,0xFF,0xFD,0xFE,0x02,0x03,0xF1,0xDC,0xFF,0x7F,0xDF,0xFD,0xFD,0xFE,0x7F,0xDF,0xA0,0xAC,0x7F,0x3F,0xDD,0xFE,0xFD,0xFF,0xFF,0xDF,0xFF,0xFF,0xFF,0x1A,0x8F,0xF7,0xFF,0xBF,0xFF,
0xDF,0xFF,0xFD,0xFF,0xFF,0xDF,0xF0,0x18,0xFF,0x7F,0xDF,0xF7,0xFD,0xE7,0x7B,0xFF,0xFF,0xFD,0xFE,0x3A,0xDF,0xFD,0xFF,0xFF,0xFF,0xDE,0xFF,0xFD,0xFB,0xFF,0xFF,0xF0,0x41,0xFF,0x7F,0x9F,0xF7,0xFF,0xFF,0x7E,0xDF,0x27,0xFD,0x7A,0x5E,0xBF,0xF7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD,0xFF,0xFF,0xDF,0xF1,0x21,0xFE,0x7E,0xBF,0xF7,0xFD,0xFE,0xFF,0xD7,0xA7,0xFC,0x6A,0x00,0x80,0xF0,0xAC,0x37,0x3A,0xC4,0x36,0xB9,0x4A,0xFF,0xDF,0x20,0x3C,0x3F,0x1F,0xCF,0xF7,0xFD,0xEF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0A,0xC7,0xF3,0xFD,0xDF,0xEF,0xDF,0xFF,
0xFD,0xFF,0xFF,0xFF,0xF0,0xDC,0xFF,0x77,0xDF,0xFD,0xFF,0xFD,0x7F,0xFF,0xFF,0xBF,0xFF,0x3A,0xDF,0xFE,0xFF,0x7F,0xFF,0xDF,0xFF,0xED,0xF7,0xFF,0x7F,0xF1,0x0D,0xEF,0x7F,0xFF,0xD7,0xFC,0xEF,0x7F,0xDF,0xBE,0xFF,0xFF,0x6B,0xBF,0xFF,0xFD,0xFF,0xFE,0xDF,0xFF,0xFF,0xDF,0xFF,0xDF,0xF5,0x2B,0xFF,0x7F,0xFF,0xF7,0xDD,0xFB,0xF7,0xDE,0xFF,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0xEF,0xFF,0x7B,0xFF,0xFF,0xFF,0xF7,0xFF,0xF7,0xCB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xDF,0xFF,0xFD,0xFF,0x02,0x01,0xE1,0xA8,0xEB,0x37,0x92,0x8F,0xFD,0x2A,
0x7B,0x84,0x80,0x78,0x7F,0x3F,0xDF,0xF7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD,0xFE,0x1A,0x8F,0xF7,0xFF,0xBF,0xFF,0xDF,0xFF,0xFD,0xFF,0xFF,0xDF,0xF3,0xAD,0xFF,0xEF,0xF7,0xFF,0xFD,0xFF,0xFE,0xDF,0x7F,0xF7,0xFF,0x37,0x9F,0xFF,0xFF,0xFF,0x7F,0xFF,0xEF,0xCF,0xF7,0xFF,0xDE,0xE4,0xA3,0xFF,0x7F,0xDF,0xFF,0xF9,0xFF,0xFF,0xDF,0xF7,0xFD,0xDF,0xFF,0xFF,0xFF,0xFF,0xFB,0xFC,0xFF,0xFF,0x7F,0x9F,0xFF,0xFF,0xF4,0xAB,0xFF,0x7F,0xDF,0x7F,0xDD,0xFF,0xE7,0xDF,0xEF,0xFD,0xFB,0x7B,0xBF,0xFF,0xFF,0xFD,0xFF,0xDF,0xFF,0xFF,0xFF,0xEF,0xDF,
0xF1,0x21,0xFE,0x7F,0xFF,0xF7,0xB9,0xDF,0xFF,0xDF,0xB7,0xFC,0xDE,0x00,0x03,0x80,0x18,0x43,0x4A,0x10,0x04,0xA4,0x80,0x30,0x84,0x80,0xE0,0x7E,0x3F,0xDE,0xFF,0xFF,0xB9,0xFF,0xDE,0xB7,0xBC,0xFF,0x01,0x8F,0xF7,0xFD,0xFF,0x7F,0xDE,0x77,0xBF,0xFF,0xFF,0xDF,0xE1,0x0D,0xEF,0x7F,0xFF,0xD7,0xFC,0xEF,0x7F,0xDF,0xBE,0xFF,0xFF,0x4A,0x3F,0xF7,0xFD,0xFF,0xFF,0x9F,0xFF,0xFD,0xFF,0x7F,0xDD,0xF4,0x03,0xB9,0x79,0xCE,0xF7,0xFD,0x39,0x5F,0x8E,0xE3,0xBD,0xF3,0x4A,0x7F,0xF7,0xBD,0xFF,0xFF,0xD7,0xEF,0xFD,0xFF,0x7F,0xFE,0xF2,0x01,
0xEB,0xFF,0xDF,0xB7,0xFC,0xEE,0x7F,0xCB,0x97,0xED,0xEE,0x30,0x9E,0xFF,0xFF,0xBF,0x7F,0xCE,0xF7,0xFD,0xFB,0xFF,0xDF,0xE1,0x20,0xFF,0x7F,0xBF,0xF7,0x7D,0xF3,0xFB,0xDE,0xE7,0xF9,0x78,0x08,0x07,0x03,0xAD,0xAE,0xFF,0xD2,0x93,0xC0,0x60,0x38,0x4B,0x31,0xC0,0xFB,0x7F,0xFF,0xFF,0xFF,0xFF,0x7E,0xCF,0x17,0xED,0xFF,0x3A,0xDF,0xFD,0xFF,0xFF,0xFF,0xDE,0xFF,0xFD,0xFB,0xFF,0xFF,0xF6,0xBB,0xFF,0xFF,0xDF,0xFF,0xED,0xFF,0xFF,0xFD,0xFF,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFB,0xFC,0xFF,0xFF,0x7F,0x9F,0xFF,0xFF,0xF4,0xA7,0xFF,0x7B,
0xDF,0xFF,0xFD,0x7E,0xFF,0xDF,0xF7,0xFF,0xEF,0x3C,0x1F,0xBF,0xFF,0xFF,0xF7,0xFF,0xF7,0xEC,0xF1,0x7E,0xDF,0xE1,0x80,0xF1,0x7E,0xFD,0xFE,0x7D,0xFF,0x3C,0x47,0x03,0xC5,0xFB,0x38,0x5F,0xBF,0xFF,0xFF,0xFF,0xDF,0xF7,0xEC,0xF1,0x7E,0xFF,0xF2,0xCD,0xFF,0xFF,0xDF,0xFF,0xFF,0xEF,0x7F,0x9F,0xBF,0xFF,0xF6,0x00,0x06,0x00,0x41,0x4A,0x4A,0x88,0x01,0x80,0x00,0x18,0x40,0x21,0x80,0xF0,0x7F,0xFF,0xFF,0xFD,0xEB,0x3C,0x4E,0x13,0xCC,0xFF,0x04,0x1F,0xF7,0xF9,0xFF,0x7F,0xFF,0xF7,0xED,0xF2,0x7F,0xD7,0xA5,0x2B,0xFF,0x7F,0xFF,0xF7,
0xDD,0xFB,0xF7,0xDE,0xFF,0xFD,0xFF,0x4A,0xBF,0xF7,0xFD,0xF7,0xFD,0xDF,0xFE,0x7D,0xFE,0xFF,0xDF,0xB2,0x01,0xEB,0xFF,0xDF,0xB7,0xFC,0xEE,0x7F,0xCB,0x97,0xED,0xEE,0x18,0x0F,0x17,0xEF,0xDF,0xE7,0xDF,0xF3,0xC4,0x70,0x3C,0x5F,0xB0,0x00,0xE1,0x7C,0x9E,0xF7,0xF8,0xB9,0x1C,0x06,0x03,0x81,0x50,0x18,0x4F,0x37,0xFF,0xFF,0xFF,0xDF,0xB3,0xC4,0xE0,0x7C,0x7F,0xA0,0x08,0xFF,0x5E,0x9F,0xF7,0xED,0xEE,0x7E,0xD5,0x0F,0xE9,0x68,0x10,0x0E,0x05,0xEB,0xFF,0x7B,0x8C,0x23,0x84,0x61,0x3C,0x84,0xC3,0x81,0xFA,0xFF,0xFF,0xFF,0xFD,0xEF,
0x7E,0xCF,0x37,0xFC,0xFE,0x5E,0xBF,0xF7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD,0xFF,0xFF,0xDF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xF7,0xBF,0xFF,0xFF,0xFF,0x7F,0xFF,0x7B,0xBF,0xFF,0xFF,0xFD,0xFF,0xDF,0xFF,0xFF,0xFF,0xEF,0xDF,0xF3,0x09,0xEF,0xFF,0xFB,0xF7,0xFC,0xEF,0x7F,0xDF,0xBF,0xFD,0xFE,0x38,0x5F,0xBF,0xFF,0xFF,0xFF,0xDF,0xF7,0xEC,0xF1,0x7E,0xFF,0xF1,0x84,0xF3,0x7F,0xFF,0xFF,0xFD,0xFB,0x3C,0x4E,0x07,0xC7,0xFA,0x3C,0x9F,0xFF,0xFF,0xDF,0xEF,0xFF,0xF7,0xED,0xF1,0xFE,0x1F,0xC1,0x30,0xFE,0x7F,0xFF,0xF7,0xFD,0xFE,0xFF,0xFF,
0xA7,0xF0,0xE8,0x00,0x04,0x01,0x21,0xF2,0x12,0x04,0x82,0xCC,0x02,0x13,0x00,0x81,0x00,0xE8,0x7F,0xBF,0xF7,0xF8,0xFF,0x7F,0xCF,0xF3,0xF8,0x5C,0x12,0x1F,0xE7,0xEB,0xFF,0x7F,0xDF,0xEF,0xFD,0x7A,0x7F,0xC6,0xA7,0xCB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xDF,0xFF,0xFD,0xFF,0x12,0x1F,0xE7,0xFF,0xFF,0x7B,0x9D,0xFF,0xFD,0xFB,0x7F,0xCD,0xE1,0x20,0xFF,0x7F,0xBF,0xF7,0x7D,0xF3,0xFB,0xDE,0xE7,0xF9,0x78,0x2C,0xDF,0xFF,0xFD,0xFF,0xFF,0xFE,0xF7,0xF9,0xFB,0xFF,0xFF,0x60,0x08,0xFF,0x5E,0x9F,0xF7,0xED,0xEE,0x7E,0xD5,0x0F,0xE9,
0x68,0x13,0x0F,0xE7,0xFF,0xFF,0x7F,0xDF,0xEF,0xFF,0xFA,0x7F,0x0E,0x80,0x20,0x5C,0x1A,0x9F,0xF3,0x79,0x78,0xFD,0x96,0x83,0xA0,0x40,
};

char bit[] =
{
0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01
};

void main()
{
for(;;)
{
char str[8];
int num;
if( gets(str)==NULL || str[0]==NULL )
{
break;
}
num = (str[0]-'0')*1000 + (str[2]-'0')*100 + (str[4]-'0')*10 + (str[6]-'0');
if( num==0 )
{
break;
}
puts(res[num/8] & bit[num&7] ? "YES" : "NO" );
}
}


  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值