最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

输入两个整数n和m,从数列1,2,3,……n中随意取几个数,使其和等

来源:懂视网 责编:小采 时间:2020-11-09 08:15:41
文档

输入两个整数n和m,从数列1,2,3,……n中随意取几个数,使其和等

输入两个整数n和m,从数列1,2,3,……n中随意取几个数,使其和等:100题之21题:编程求解,输入两个整数n和m,从数列1,2,3,……n中随意取几个数,使其和等于m。要求将所有的可能组合列出来。实际上就是一个背包问题。 求解思路: 1.首先判断,如果nm,则n中大于m的数不可能参与组合,此时置n = m; 2.将最大数n加入且n
推荐度:
导读输入两个整数n和m,从数列1,2,3,……n中随意取几个数,使其和等:100题之21题:编程求解,输入两个整数n和m,从数列1,2,3,……n中随意取几个数,使其和等于m。要求将所有的可能组合列出来。实际上就是一个背包问题。 求解思路: 1.首先判断,如果nm,则n中大于m的数不可能参与组合,此时置n = m; 2.将最大数n加入且n

100题之21题:编程求解,输入两个整数n和m,从数列1,2,3,……n中随意取几个数,使其和等于m。要求将所有的可能组合列出来。实际上就是一个背包问题。 求解思路: 1.首先判断,如果nm,则n中大于m的数不可能参与组合,此时置n = m; 2.将最大数n加入且n == m,

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,递归下去

[java] view plaincopyprint?

  1. public class s21 {
  2. private static LinkedList list = new LinkedList();
  3. /**
  4. * 求解思路:
  5. * 1.首先判断,如果n>m,则n中大于m的数不可能参与组合,此时置n=m;
  6. * 2.将最大的数n加入且n==m,则满足条件,输出;
  7. * 3.将n分两种情况求解:n没有加入,取n=n-1,m=m,递归;
  8. * 4.n加入,取n=n-1,m=m-n,递归。
  9. * 5.结束。
  10. * @param sum
  11. * @param n
  12. */
  13. public static void findSum(int sum, int n)
  14. {
  15. if ( n < 1 || sum < 1)
  16. return;
  17. if (sum > n)
  18. {
  19. list.add(n);
  20. findSum(sum - n, n - 1);// n加入,取n=n-1,m=m-n
  21. list.pop();
  22. findSum(sum, n - 1); // n没有加入,取n=n-1,m=m
  23. }
  24. else
  25. {
  26. System.out.print(sum); // sum < n ,直接输出n就可以满足了
  27. for (int i = 0; i < list.size(); i ++)
  28. System.out.print(" "+ list.get(i));
  29. System.out.println();
  30. }
  31. }
  32. /**
  33. * @param args
  34. */
  35. public static void main(String[] args) {
  36. // TODO Auto-generated method stub
  37. int sum = 10;
  38. int n = 6;
  39. findSum(sum,n);
  40. }
  41. }

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

输入两个整数n和m,从数列1,2,3,……n中随意取几个数,使其和等

输入两个整数n和m,从数列1,2,3,……n中随意取几个数,使其和等:100题之21题:编程求解,输入两个整数n和m,从数列1,2,3,……n中随意取几个数,使其和等于m。要求将所有的可能组合列出来。实际上就是一个背包问题。 求解思路: 1.首先判断,如果nm,则n中大于m的数不可能参与组合,此时置n = m; 2.将最大数n加入且n
推荐度:
标签: 输入 两个 2
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top