题解 | #24点游戏算法#

24点游戏算法

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

//抄的大佬的dfs算法,确实感觉这道题和迷宫问题很像,但是对于选两个数去加减乘除然后展开还有回溯实在是一团乱麻,感觉大佬的思路简洁明了又清晰,从第一个数开始深搜(类似于迷宫问题的起点),然后对四个方向进行加减乘除的遍历(类似迷宫四个方向,但是四个方向的格子里都有数值,数值是一层一层放的,比如第一层上下左右放的是a[1],第二层a[2],第三层a[3]),没有结果就回溯。
#include <stdio.h>
int visit[4]={1,0,0,0};
int dfs(int*arr,int num)
{
    if(num==24)
    return 1;
    for(int i=0;i<4;i++)
    {
        if(visit[i]==0)
        {
            visit[i]=1;
            if(dfs(arr,num+arr[i])||dfs(arr,num-arr[i])||dfs(arr,num*arr[i])||dfs(arr,num/arr[i]))
            return 1;
            visit[i]=0;
        }
    }
    return 0;
}
int main() {
    int arr[4]={0};
    scanf("%d %d %d %d",&arr[0],&arr[1],&arr[2],&arr[3]);
    int num=arr[0];
    int result=dfs(arr,num);
    if(result==1)
    printf("true\n");
    else
    printf("false\n");
    return 0;
}

全部评论

相关推荐

阿武同学:基本信息保留前面三行,其他的可以全部删掉,邮箱最重要的你没写,主修课程精简到8个以内,实习里面2/3/4都是水内容的,非要写的话建议两到三句话,项目经历排版优化下,自我评价缩到三行
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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