神奇数字的数量 DFS深度优先搜索
来源:互联网 发布:日本美瞳 知乎 编辑:程序博客网 时间:2024/06/06 01:39
题意如上图,这个题主要就是如何判断一个数字是不是神奇数字,这个技术拆分出所有的位,然后DFS深度优先遍历判断。
代码如下:
import java.util.ArrayList;import java.util.List;public class Solution{ /* * 神奇数字的判断 * */ boolean getCount(int num) { //小于10的肯定不是 if(num<=10) return false; String numStr=""+num; int sum=0; List<Integer> list=new ArrayList<Integer>(); for(int i=0;i<numStr.length();i++) { int oneBit=numStr.charAt(i)-'0'; sum+=oneBit; list.add(oneBit); } //奇数肯定不是 if(sum%2==1) return false; return isRes(list,sum/2,0,0); } /* * DFS神奇数字的判断 * 就是选择当前数字和不选择当前数字的递归搜索 * */ private boolean isRes(List<Integer> list, int target, int index, int sum) { if(sum>target) return false; else if(sum==target) return true; if(index==list.size()) return sum==target; else { //选择当前数组 boolean add=isRes(list, target, index+1, sum+list.get(index)); if(add==false) return isRes(list, target, index+1, sum); //不选择 else return true; } } //统计left到right的神奇数字的数量 int getMagicNum(int left,int right) { int res=0; for(int i=left;i<=right;i++) { if(getCount(i)) res++; } return res; } public static void main(String[] args) { Solution solution=new Solution(); System.out.println(solution.getMagicNum(1, 50)); }}
阅读全文
0 0
- 神奇数字的数量 DFS深度优先搜索
- sdut 3469 深度优先搜索练习之神奇的矩环(DFS)
- [SDUT](3469)深度优先搜索练习之神奇的矩环 ---DFS(图)
- SDUT-3469 深度优先搜索练习之神奇的矩环(暴力/DFS)
- 深度优先搜索 DFS
- 深度优先搜索 DFS
- DFS 深度优先搜索
- DFS 深度优先搜索
- 深度优先搜索(DFS)
- 深度优先搜索(DFS)
- 深度优先搜索DFS
- DFS深度优先搜索
- 深度优先搜索(DFS)
- dfs深度优先搜索
- dfs 深度优先搜索
- 深度优先搜索(DFS)
- 深度优先搜索DFS
- DFS深度优先搜索
- 求方差的公式是什么?
- Mysql让主键归0,重新从1开始
- 前端初学学习进程IX
- Leetcode #11. Container With Most Water
- letter-combinations-of-a-phone-number
- 神奇数字的数量 DFS深度优先搜索
- C语言中的Operator
- ZigBee设备渗透工具:Attify Z
- HTTP文件断点续传原理解析(源码)
- 【二分】【codeforces817C】Really Big Numbers
- 【知了堂学习笔记】分页查询—第二章
- 笨方法学python 15
- Informatica中lookup组件学习
- C语言根据国家英文首字母进行排序