题解 | #24点游戏算法#

24点游戏算法

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

import java.util.*;
public class Main {
        public static boolean[] visited = new boolean[4];
        public static int[] nums = new int[4];
        public static boolean flag = false;
        public static void main(String[] args){
            Scanner sc = new Scanner(System.in);
            while(sc.hasNext()){
                for(int i=0;i<4;i++){
                    nums[i]=sc.nextInt();
                }
                dfs(0,0);
                System.out.println(flag);
            }
        }
        public static void dfs(int start,double sum){
            //递归终止条件, start表示当前的位置 如果四个数字都遍历完了 最后start=4
            if(start==4){
                if(sum==24){
                    flag=true;
                }
            }else{
                start++;
                for(int i=0;i<4;i++){
                    if(!visited[i]){
                        visited[i]=true;//标记这轮循环中这个值已经访问过
                        dfs(start,sum+nums[i]);
                        dfs(start,sum-nums[i]);
                        dfs(start,sum*nums[i]);
                        dfs(start,sum/nums[i]);
                        visited[i]=false;
                    }
                }
            }
        }
}
全部评论
厉害啊,简洁明了
点赞 回复 分享
发布于 03-07 16:44 江苏

相关推荐

不愿透露姓名的神秘牛友
11-21 17:16
科大讯飞 算法工程师 28.0k*14.0, 百分之三十是绩效,惯例只发0.9
点赞 评论 收藏
分享
11-01 08:48
门头沟学院 C++
伤心的候选人在吵架:佬你不要的,能不能拿户口本证明过户给我。。球球了
点赞 评论 收藏
分享
6 4 评论
分享
牛客网
牛客企业服务