挑战程序设计竞赛(算法和数据结构)——6.2穷举搜索,分治法JAVA实现

挑战程序设计竞赛(算法和数据结构)——6.2穷举搜索,分治法JAVA实现,第1张

挑战程序设计竞赛(算法和数据结构)——6.2穷举搜索,分治法JAVA实现

首先实现一个列举组合的算法。即如果有三个数,有哪些取法?
答,共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

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5482758.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存