题目1:字符串子序列(算法课第八课)
求一个字符串的全部子序列。
思路
不是子字符串。
对于每一个位置,都有要和不要的两种情况,最后是一个树状的图。
子序列不包含 当前字符
- i作为String进行的哪里的做坐标,加1
- res 保持原来的值
printAllSubsquence(chs,i+1,res)
子序列包含 当前字符
- i作为String进行的哪里的做坐标,加1
- res 加上当前字符
printAllSubsquence(chs,i+1,res+chs[i])
代码
1 | public class PrintAllSubsquences{ |
输出:(空字符串也是其子序列)
1 |
|
题目2:数组的和(算法课第八课)
给你一个数组arr,和一个整数aim。如果可以任意选择arr中的数字,能不能累加得到aim,返回true或者false
分析
每个数组位置的元素,都有选和不选两种情况。
没有累加i位置的元素
- i作为数组进行的哪里的做坐标,加1
- sum 保持原来的值
isSum(arr, i + 1, sum, aim)
累加了i位置的元素
- i作为数组进行的哪里的做坐标,加1
- sum 加上当前的 数组值
isSum(arr, i + 1, sum + arr[i], aim)
代码
1 | public class IsSum { |
输出:
1 | true |