首先实现一个列举组合的算法。即如果有三个数,有哪些取法?
答,共2^3=8种情况:{0,0,0},{0,0,1},{0,1,0},{0,1,1},{1,0,0},{1,0,1},{1,1,0},{1,1,1}。
实现思路:
将就看一下…实在是没有想到Onenode复制出来是图片。
运行结果:
题目:
代码如下:
import java.io.BufferedInputStream; import java.util.Scanner; public class _6_2 { public static void main(String[] args) { System.out.println("请输入n,A[n],q,M[q]:"); Scanner cin = new Scanner(new BufferedInputStream(System.in)); int n = cin.nextInt(); int[] A = new int[n]; for (int i=0;i=n){return false;}//如果i超过n时显然不行了 boolean res = solve(i+1, m, n, A) || solve(i+1, m-A[i], n, A);//问题可以分治为选不选下一个数字是否能得到目标数字 return res; } }
运行结果:
请输入n,A[n],q,M[q]: 5 1 5 7 10 21 4 2 4 17 8 no no yes yes
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)