题解 | #24点游戏算法#

24点游戏算法

http://www.nowcoder.com/practice/fbc417f314f745b1978fc751a54ac8cb

#include <stdio.h>

int v[4] = {0};

static int dfs(int *array, int total)
{
    if(total == 24)
    {
        return 1;
    }
    for(int i = 0; i < 4; i++)
    {
        if(v[i] == 0)    //表示还未找到
        {
            v[i] = 1;    //表示已经找到
            if(dfs(array, total+array[i]) 
               || dfs(array, total-array[i])
               || dfs(array, total*array[i])
               || dfs(array, total/array[i])
              )
            {
                return 1;
            }
            else
            {
                v[i] = 0;    //若不是,则回退为未找到
            }
        }
    }
    return 0;
}

int main()
{
    int array[4] = {0};
    for(int i = 0; i < 4; i++)
    {
        scanf("%d", &array[i]);
    }
    int total = array[0];    //最终的和
    v[0] = 1;    //表示从0开始找
    if(dfs(array, total) == 1)
    {
        printf("true\n");
    }
    else
    {
        printf("false\n");
    }
    return 0;
}
全部评论
感觉没判断四个数都用到,举个例子2*12=24,只用了两个数就直接结束了dfs递归
1 回复 分享
发布于 02-27 14:59 北京

相关推荐

09-21 21:14
门头沟学院
否极泰来来来来:和他说:这里不好骂你,我们加个微信聊
点赞 评论 收藏
分享
09-19 13:59
门头沟学院 Java
用微笑面对困难:Trae一下,如果真成了,他用了直接发字节起诉代码版权,,这个代码不商用是没问题的如果没成也是情理之中的。
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务