输入两个整数n和m,从0-n中随意取几个数,使其和等于m
来源:互联网 发布:某路口车流量数据 编辑:程序博客网 时间:2024/05/19 15:23
编程求解,输入两个整数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;递归下去;
求解思路:
1.首先判断,如果n>m,则n中大于m的数不可能参与组合,此时置n = m;
2.将最大数n加入且n == m,则满足条件,输出;
3.将n分两种情况求解,
(1)n没有加入,取n = n - 1; m = m;递归下去;
(2)n加入,取n = n - 1, m = m - n,递归下去
import java.util.*;public class 组合数 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while (scanner.hasNext()) { int n = scanner.nextInt();//n int sum = scanner.nextInt();//m findSum(sum, n); System.out.println(res); //System.out.println(count); //count = 0; //求符合条件的个数 res = new ArrayList<>();//重置res list } } private static List<Integer> list = new ArrayList<>(); private static List<List<Integer>> res = new ArrayList<>(); // private static int count = 0;//求个数 public static void findSum(int sum, int n) { if (n < 1 || sum < 1) return; if (sum <= n) {//注意是小于等于 list.add(sum); // sum < n ,直接加入sum可以满足了 res.add(new LinkedList<>(list)); list.remove(list.size() - 1); // count++;//求个数 return; } list.add(n); findSum(sum - n, n - 1);// n加入,取n=n-1,sum=sum-n list.remove(list.size() - 1); findSum(sum, n - 1); // n没有加入,取n=n-1,sum=sum }}
阅读全文
0 0
- 输入两个整数n和m,从0-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
- 动态规划——5 输入两个整数 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
- 输入两个整数 n 和 m,从数列 1,2,3.......n 中 随意取几个数, 使其和等于 m
- 每天学习一算法系列(21)(输入两个整数n 和m,从数列1,..n 中随意取几个数使和等于m)
- 输入两个整数n和m,从数列1,2,3,...,n中随意取几个数,使其和等于m,将其所有可能的组合列出来。 递归求解
- 输入两个整数n和m,从数列1,2,3,...,n中随意取几个数,使其和等于m,将其所有可能的组合列出来。 回溯求解
- 编程求解,输入两个整数n和m,从数列1,2,3,……n中随意取几个数,使其和等于m。要求将所有的可能组合列出来(背包问题求解)
- Leetcode 134. Gas Station 解题报告
- poj 1754 I Hate It 线段树
- Longest Substring Without Repeating Characters
- 2018百度android方向校招编程题
- 3.字符串反转
- 输入两个整数n和m,从0-n中随意取几个数,使其和等于m
- 手势识别(业余知识 )2017/9/19
- 共享锁和排它锁
- 整数求和
- 迅雷前端笔试题
- ceshi
- js 原型继承 Prototype
- 操作系统(一)协作进程临界区一些代码理解--Peterson’s Solution
- mybatis的一级缓存————7