admin管理员组

文章数量:1794759

24点游戏 程序(一)

无意间看见这个24点的网站/,于是想起来把程序写写。

考虑到中缀表达式有括号的麻烦,所以打算用后缀表达式处理。

24点用后缀表达式的话,一共4个数字,3个运算符。

假设数字用1表示,运算符用2表示。

那么可能的计算方式就是类似

1111222

1112221

。。。

但是这样随便列举出来的不一定是合法的后缀表达式。

所以第一步,找出合法的包含4个数值,3个运算符的后缀表达式。

代码语言:javascript代码运行次数:0运行复制
bool check(int data[])
{
    int len = 7;
    stack<int> suffix;

    for (int i = 0; i < len; i++)
    {

        if (data[i] == 1)
        {
            suffix.push(data[i]);
        }
        else if (data[i] == 2)
        {
            if (suffix.empty())
                return false;
            if (suffix.top() == 1)
            {
                suffix.pop();
                if (!suffix.empty() && suffix.top() == 1)
                {
                    //suffix.pop();
                }
                else
                {
                    return false;
                }
            }
            else
            {
                return false;
            }
        }
    }
    return !suffix.empty() && suffix.top() == 1;
}
代码语言:javascript代码运行次数:0运行复制
void checkValidPost()
{
    int data[] = {1,1,1,1,2,2,2};
    do
    {
        if (check(data))
        {
            cout<<data[0]<<" "<<data[1]<<" "<<data[2]<<" "<<data[3]<<" "<<data[4]<<" "<<data[5]<<" "<<data[6]<<" "<<endl;
        }
    }
    while(next_permutation (data,data+7) );
}

结果合法的后缀有5个。

后面将用这5个表达式进行穷举。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2024-10-11,如有侵权请联系 cloudcommunity@tencent 删除int程序网站游戏data

本文标签: 24点游戏 程序(一)