java动态规划(java动态规划算法实例)

本篇文章给大家谈谈java动态规划,以及java动态规划算法实例对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java动态规划 计算数n由k个数相加而成的情况数

public class MyClass {

    public static void main(String[] args) {

        System.out.println(" result count:" + method(6, 3));

    }

    public static int method(int n, int k) {

        ListListInteger list = new ArrayList();

        for (int i = 0; i  k; i++) {

            if (i == 0) {

                for (int j = 1; j  n; j++) {

                    ListInteger li = new ArrayList();

                    li.add(j);

                    list.add(li);

              铅纤  }

                continue;

            }

            ListListInteger listNew = new ArrayList();

            for (ListInteger integers : list) {

                for (int j = integers.get(integers.size() - 1); j  n; j++) {

         陆雹           ListInteger li = new ArrayList();

                    li.addAll(integers);

                    li.add(j);

                    listNew.add(li);

         早激帆           if (i + 1 == k) {

                        int res = 0;

                        for (Integer integer : li) {

                            res += integer;

                        }

                        if (res != n) {

                            listNew.remove(li);

                        }

                    }

                }

            }

            list.clear();

            list.addAll(listNew);

        }

        for (ListInteger integers : list) {

            for (Integer integer : integers) {

                System.out.print(integer + "\t");

            }

            System.out.println();

        }

        return list.size();

    }

}

[img]

JAVA动态规划,最长递增子序列的代码太难理解,求大神帮我讲解一下!

第一层的 if 逻辑表示 如果新的一个数A[i]对于 B[]中的数来说是递增的,则len加1,这是记录递增数列长度的主要逻指仿辑。else中的逻辑保证B[]中的数列是最新的递增数列。

举个例子,如果A数组为[1,2,3,4,5, 3.1, 3.2, 3.3, 3.4]

当i=4时 len=4 B=[x,1,2,3,4,x] 循环结唯咐纤束后 len=5 B=[x,1,2,3,4,5] 第一层判简凯断走if

当i=5时 len=5 B=[x,1,2,3,4,5] 循环结束后 len=5 B=[x,1,2,3,3.1,5] 第一层判断走else

当i=6时 len=5 B=[x,1,2,3,3.1,5] 循环结束后 len=5 B=[x,1,2,3,3.1,3.2] 第一层判断走else

当i=7时 len=5 B=[x,1,2,3,3.1,3.2] 循环结束后 len=6 B=[x,1,2,3,3.1,3.2,3.3] 第一层判断走else

...

其中第一层的else中做的工作就是把B从[x,1,2,3,4,5] 一步步变成 [x,1,2,3,3.1,3.2],最终B[]的最后一个元素变成3.2, 在下一次A[i]=3.3的时候,就又会走第一次if的逻辑(len加1)了。

用java实现一个动态规划,求大神帮忙!!!

public class Test { /*创建类*/public static void main(String[] args) {System.out.println(dg(100));}static int dg(int i) { /*定义变洞锋量 */int sum;if (i == 1) /*假设条孙雹件*/return 1;elsesum = i + dg(i - 1); /*1~100的和的表则颤帆达式*/retur...

关于java动态规划和java动态规划算法实例的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

标签列表