题解 | #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;
}
全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务