输入两个整数n和m,从数列1,2,3,……n中随意取几个数,使其和等于m
题目:编程求解,输入两个整数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的更多相关文章
- 【编程题目】输入两个整数 n 和 m,从数列 1,2,3.......n 中 随意取几个数, 使其和等于 m ... ★
第 21 题(数组)2010 年中兴面试题编程求解:输入两个整数 n 和 m,从数列 1,2,3.......n 中 随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来. 我的思路: 从小 ...
- 面试题:输入两个整数 n 和 m,从数列1,2,3…….n 中 随意取几个数, 使其和等于 m
问题: 2010年中兴面试题 编程求解: 输入两个整数 n 和 m,从数列1,2,3…….n 中 随意取几个数, 使其和等于 m ,要求将其中所有的可能组合列出来. 思路: 类似这种组合问题一般都是使 ...
- 输入两个整数n 和m,从数列1,2,3.......n 中任意取几个数, 使其和等于m ,要求将当中全部的可能组合列出来
中兴面试题之中的一个.难度系数中. 题目描写叙述例如以下:输入两个整数n 和m,从数列1,2.3.......n 中任意取几个数, 使其和等于m ,要求将当中全部的可能组合列出来. 逻辑分析: 1.比 ...
- 编程求解,输入两个整数n和m,从数列1,2,3,……n中随意取几个数,使其和等于m。要求将所有的可能组合列出来
import java.util.LinkedList; import java.util.Scanner; public class Main { private static LinkedList ...
- ytu 1057: 输入两个整数,求他们相除的余数(带参的宏 + 模板函数 练习)
1057: 输入两个整数,求他们相除的余数 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 177 Solved: 136[Submit][Status ...
- c++作业:输入两个整数,用函数求两数之和。函数外部声明有什么作用?
#include <iostream> using namespace std; int main(){ //求两数的和? int a,b,s; cout<<"请你输 ...
- JS写一个简单的程序,输入两个整数,打印这两个数的和,差,积,余数
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 输入n个整数,输出其中最小的k个
描述 输入n个整数,输出其中最小的k个. 详细描述: 接口说明 原型: bool GetMinK(unsignedint uiInputNum, int * pInputArray, unsigned ...
- 用swap函数交换两个整数
#include<stdio.h> //头文件 main() //主函数 { void swap(int *p,int *q); //声明 int a,b; //定义两个整数 int *p ...
随机推荐
- String类、常量池、字符串比较
String类.常量池.字符串比较 一:String类 1.String类又称作不可变字符序列 2.String位于java.lang包中,Java程序默认导入 ...
- kaili Linux学习推荐网站
kaili学习推荐网站 kail中文网:http://www.kali.org.cn/forum.php?gid=67 Kali官方教材:https://kali.training/ Kali Lin ...
- SGD vs Momentum vs NAG vs Adagrad vs Adadelta vs RMSprop vs Adam
梯度下降优化基本公式:\({\theta\leftarrow\theta-\eta\cdot\nabla_\theta{J(\theta)}}\) 三种梯度下降优化框架 这三种梯度下降优化框架的区别在 ...
- javascript 最全面的数组操作合集
一.数组添加.删除.替换.截取操作 1.arr.unshift(1) 在数组头部添加一个元素 1 (直接改变原数组,返回值为添加元素后数组的length) 2.arr.shift() 在数组的头部删除 ...
- LeetCode--No.010 Regular Expression Matching
10. Regular Expression Matching Total Accepted: 89193 Total Submissions: 395441 Difficulty: Hard Imp ...
- es 基于match_phrase的模糊匹配原理及使用
[版权声明]:本文章由danvid发布于http://danvid.cnblogs.com/,如需转载或部分使用请注明出处 在业务中经常会遇到类似数据库的"like"的模糊匹配需求 ...
- Python基础教程(第3版) 笔记(二)
1.8模块Python提供了完成(某人的年 龄为32.9,并想将这个值向下圆整为32,因为他还没有满33岁)这种任务的函 数floor.导入模块,可以使用特殊命令import.函数floor包含在模块 ...
- webServlet("/") 和 webServlet("/*") 的区别
“/” 默认放行了jsp,也就是jsp文件不执行下面的service方法,其他都执行 “/*” 全部执行
- CentOS 安装 kafka
首先确保JDK已正确安装并设置好环境变量 安装Zookeeper 到官网下载: https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/ zooke ...
- Spring Boot + Spring Cloud 构建微服务系统(五):熔断监控面板(Hystrix Dashboard)
Hystrix Dashboard Hystrix-dashboard是一款针对Hystrix进行实时监控的工具,通过Hystrix Dashboard我们可以在直观地看到各Hystrix Comma ...