题目:编程求解,输入两个整数n和m,从数列1,2,3,……n中随意取几个数,使其和等于m。要求将所有的可能组合列出来。

分析:分治的思想。可以把问题(m,n)拆分(m - n, n -1)和(m, n - 1)。

注意点:1、n大于m时,可直接从n = m出开始搜索

    2、结束条件:n < 1 || m < 1

    3、打印输出结果。注意打印输出结果并不代表函数调用结束,以n = 7 和 m = 10为例,7、3和7、2、1都是一种结果,不能得到7、3的时候终止。打印输出的条件是n = m

程序代码如下:

Java

public class FindSum {
// used as a stack to save the result
private static LinkedList<Integer> list = new LinkedList<Integer>(); public static void findSum(int sum, int n) {
if (n < 1 || sum < 1)
return;
if (sum < n)
n = sum;
if (sum == n) {
for (int i = 0; i < list.size(); i++)
System.out.print(list.get(i) + " ");
System.out.print(sum);
System.out.println();
} list.addLast(n);
findSum(sum - n, n - 1);
list.removeLast();
findSum(sum, n - 1);
} public static void main(String[] args) {
int sum = 10;
int n = 8;
findSum(sum, n);
}
}

输入两个整数n和m,从数列1,2,3,……n中随意取几个数,使其和等于m的更多相关文章

  1. 【编程题目】输入两个整数 n 和 m,从数列 1,2,3.......n 中 随意取几个数, 使其和等于 m ... ★

    第 21 题(数组)2010 年中兴面试题编程求解:输入两个整数 n 和 m,从数列 1,2,3.......n 中 随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来. 我的思路: 从小 ...

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

    问题: 2010年中兴面试题 编程求解: 输入两个整数 n 和 m,从数列1,2,3…….n 中 随意取几个数, 使其和等于 m ,要求将其中所有的可能组合列出来. 思路: 类似这种组合问题一般都是使 ...

  3. 输入两个整数n 和m,从数列1,2,3.......n 中任意取几个数, 使其和等于m ,要求将当中全部的可能组合列出来

    中兴面试题之中的一个.难度系数中. 题目描写叙述例如以下:输入两个整数n 和m,从数列1,2.3.......n 中任意取几个数, 使其和等于m ,要求将当中全部的可能组合列出来. 逻辑分析: 1.比 ...

  4. 编程求解,输入两个整数n和m,从数列1,2,3,……n中随意取几个数,使其和等于m。要求将所有的可能组合列出来

    import java.util.LinkedList; import java.util.Scanner; public class Main { private static LinkedList ...

  5. ytu 1057: 输入两个整数,求他们相除的余数(带参的宏 + 模板函数 练习)

    1057: 输入两个整数,求他们相除的余数 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 177  Solved: 136[Submit][Status ...

  6. c++作业:输入两个整数,用函数求两数之和。函数外部声明有什么作用?

    #include <iostream> using namespace std; int main(){ //求两数的和? int a,b,s; cout<<"请你输 ...

  7. JS写一个简单的程序,输入两个整数,打印这两个数的和,差,积,余数

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  8. 输入n个整数,输出其中最小的k个

    描述 输入n个整数,输出其中最小的k个. 详细描述: 接口说明 原型: bool GetMinK(unsignedint uiInputNum, int * pInputArray, unsigned ...

  9. 用swap函数交换两个整数

    #include<stdio.h> //头文件 main() //主函数 { void swap(int *p,int *q); //声明 int a,b; //定义两个整数 int *p ...

随机推荐

  1. Spring Boot --- Swagger基本使用

    1. pom <!-- swagger2 --> <dependency> <groupId>io.springfox</groupId> <ar ...

  2. 3-2 模板语法(vue中的内容写法)

    插值表达式.v-text.v-html的用法

  3. 【xsy1303】生成树 乱搞

    题目大意:给你n个点,问这n个点构成的最小标准差生成树的值 这题题解里面写的都是什么代码?? 你用O(n^4)的复杂度,枚举出两条边,然后求平均数. 对于剩下的边,我们求出这些边与平均数的差,然后求最 ...

  4. GDB查看内存(x 命令)

    gdb查看内存命令 首先使用gdb [YourFileName].c进入gdb界面 使用examine命令,字母缩写为x查看内存地址的值.x命令语法 x/[number][format] <ad ...

  5. Python基础教程(第3版) 笔记(一)

    1.1 数和表达式: 除法运算的结果为小数,即浮点数 >>>1/2 0.5 除法运算为整数,使用双斜杠 >>>1//2 0 >>>5.0//2.4 ...

  6. [每天解决一问题系列 - 0010] ADB Not Responding - Android Studio

    问题描述: 最近安装了Android Studio v1.0,运行的时候老是这个错误 解决方案: 网上有人说是已经有adb的进程在运行,可是打开任务管理器,找不到对应的adb 进程. 无奈之下,想到a ...

  7. 课程四(Convolutional Neural Networks),第三 周(Object detection) —— 0.Learning Goals

    Learning Goals: Understand the challenges of Object Localization, Object Detection and Landmark Find ...

  8. Thread,ThreadPool,Task, 到async await 的基本使用方法和理解

    很久以前的一个面试场景: 面试官:说说你对JavaScript闭包的理解吧? 我:嗯,平时都是前端工程师在写JS,我们一般只管写后端代码. 面试官:你是后端程序员啊,好吧,那问问你多线程编程的问题吧. ...

  9. spring cloud+.net core搭建微服务架构:服务发现(二)

    前言 上篇文章实际上只讲了服务治理中的服务注册,服务与服务之间如何调用呢?传统的方式,服务A调用服务B,那么服务A访问的是服务B的负载均衡地址,通过负载均衡来指向到服务B的真实地址,上篇文章已经说了这 ...

  10. mysql 开发进阶篇系列 34 工具篇 mysqlcheck(MyISAM表维护工具)

    一.概述 mysqlcheck客户端工具可以检查和修复MyISAM表,还可以优化和分析表.实际上,它集成了mysql工具中check,repair,analyze,optimize功能,对于check ...