输入两个整数n和m,从数列1,2,3,……n中随意取几个数,使其和等于m。要求将所有的可能组合列出来。实际上就是一个背包问题
来源:互联网 发布:苹果launchpad软件 编辑:程序博客网 时间:2024/05/22 15:19
100题之21题:编程求解,输入两个整数n和m,从数列1,2,3,……n中随意取几个数,使其和等于m。要求将所有的可能组合列出来。实际上就是一个背包问题。
求解思路:
1.首先判断,如果n>m,则n中大于m的数不可能参与组合,此时置n = m;
2.将最大数n加入且n == m,则满足条件,输出;
3.将n分两种情况求解,(1)n没有加入,取n = n - 1; m = m;递归下去;(2)n加入,取n = n - 1l, m = m - n,递归下去
- public class s21 {
- private static LinkedList<Integer> list = new LinkedList<Integer>();
- /**
- * 求解思路:
- * 1.首先判断,如果n>m,则n中大于m的数不可能参与组合,此时置n=m;
- * 2.将最大的数n加入且n==m,则满足条件,输出;
- * 3.将n分两种情况求解:n没有加入,取n=n-1,m=m,递归;
- * 4.n加入,取n=n-1,m=m-n,递归。
- * 5.结束。
- * @param sum
- * @param n
- */
- public static void findSum(int sum, int n)
- {
- if ( n < 1 || sum < 1)
- return;
- if (sum > n)
- {
- list.add(n);
- findSum(sum - n, n - 1);// n加入,取n=n-1,m=m-n
- list.pop();
- findSum(sum, n - 1); // n没有加入,取n=n-1,m=m
- }
- else
- {
- System.out.print(sum); // sum < n ,直接输出n就可以满足了
- for (int i = 0; i < list.size(); i ++)
- System.out.print(" "+ list.get(i));
- System.out.println();
- }
- }
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- int sum = 10;
- int n = 6;
- findSum(sum,n);
- }
- }
0 0
- 输入两个整数n和m,从数列1,2,3,……n中随意取几个数,使其和等于m。要求将所有的可能组合列出来。实际上就是一个背包问题
- 编程求解,输入两个整数n和m,从数列1,2,3,……n中随意取几个数,使其和等于m。要求将所有的可能组合列出来(背包问题求解)
- 编程求解,输入两个整数n和m,从数列1,2,3,……n中随意取几个数,使其和等于m。要求将所有的可能组合列出来(背包问题求解)
- 编程求解,输入两个整数n和m,从数列1,2,3,……n中随意取几个数,使其和等于m。要求将所有的可能组合列出来(背包问题求解) .
- Java求解,输入两个整数n和m,从数列1,2,3,……n中随意取几个数,使其和等于m。要求将所有的可能组合列出来(背包动态规划问题求解)
- 输入两个整数 n 和 m,从数列1,2,3…….n 中随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来
- 输入两个整数n 和 m, 从数列1, 2, 3, ..., n中随意取几个数, 使其和等于m, 要求将所有组合列出来
- 输入两个整数 n 和 m,从数列1,2,3.......n 中 随意取几个数, 使其和等于 m ,要求将其中所有的可能组合列出来.
- 输入两个整数 n 和 m,从数列1,2,3.......n 中随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来.
- 输入两个整数 n 和 m,从数列1,2,3.......n 中随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来.
- 输入两个整数n 和m,从数列1,2,3.......n 中随意取几个数,使其和等于m ,要求将其中所有的可能组合列出来.
- 输入两个整数n 和m,从数列1,2,3.......n 中随意取几个数,使其和等于m ,要求将其中所有的可能组合列出来.
- 21.输入两个整数 n 和 m,从数列1,2,3.......n 中 随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来.
- 输入两个整数n和m,从数列1,2,3.......n 中随意取几个数, 使其和等于m,要求将其中所有的可能组合列出来。
- 输入两个整数 n 和 m,从数列1,2,3.......n 中随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来.
- 输入两个整数 n 和 m,从数列1,2,3.......n 中 随意取几个数, 使其和等于 m ,要求将其中所有的可能组合列出来.
- 输入两个整数n和m,从数列1,2,3....n中随意取几个数,使其和等于m,要求将其中所有的可能组合列出来
- 输入两个整数 n 和 m,从数列1,2,3.......n 中 随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来.
- XCode Debug
- xCode 4.2如何检测程序在真机中的内存占用
- 代码里打印程序所占用的内存
- 关于在ubantu输入类似node ,brunch, less等等命令失效
- Android Notification
- 输入两个整数n和m,从数列1,2,3,……n中随意取几个数,使其和等于m。要求将所有的可能组合列出来。实际上就是一个背包问题
- [Leetcode]Palindrome Partitioning II
- 输入一个表示整数的字符串,把该字符串转换成整数并输出。
- Android下视频通信
- ubuntu 安装jdk
- 寒城攻略:Listo 教你Linux Cent OS 服务器从搭建到配置
- Java安全通信:HTTPS与SSL
- kdump几种存储方式实现
- 每位Web开发者都应知道的HTTPS是如何保证连接安全