JAVA算法:给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合(JAVA)
JAVA算法:给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合(JAVA)
给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。、
当 n = 4 ,k = 2 时;
结果为: [[1, 2], [1, 3], [1, 4], [2, 3], [2, 4], [3, 4]]
算法设计
package com.bean.algorithmbasic;import java.util.LinkedList;
import java.util.List;public class CombinationsDemo5 {/** n = 4 and k = 2* 结果: [[1, 2], [1, 3], [1, 4], [2, 3], [2, 4], [3, 4]]* */// 全局变量,存储返回结果private List<List<Integer>> ret = new LinkedList<List<Integer>>();public List<List<Integer>> combine(int n, int k) {// 非法条件:一旦出现以下条件,直接返回空if (n <= 0 || k <= 0 || k > n)return ret;// 初始化一个可能结果c,当前c为空;c中存储一个可能的组合结果(c这个链表在整个过程是会变的)LinkedList<Integer> c = new LinkedList<Integer>();// 调用递归函数generateCombination(n, k, 1, c);// 返回结果return ret;}// 递归函数private void generateCombination(int n, int k, int start, LinkedList<Integer> c) {/*** @param n:* 题目中给的n* @param k:* 题目中给的k* @param start:* 从1-n中的第start个数开始往后考虑组合问题* @param c:* 存储一个可能的组合结果**/// 递归终止条件if (c.size() == k) {// 添加结果ret.add((LinkedList<Integer>) c.clone());return;}// 递归过程// start:从start这个数开始考虑组合问题// 截止当前,c中已经存储了c.size()个元素,因此还需要 k - c.size()个元素才可以完成组合寻找// 意味着从[i...n]中间要存在k - c.size()个数才有解,否则的话当前组合解中不可能凑够k个值// 因此为了保证[i...n]至少有k - c.size()个解,就需要i <= n - (k - c.size())for (int i = start; i <= n - (k - c.size()) + 1; i++) {c.addLast(i);generateCombination(n, k, i + 1, c);c.removeLast(); // 回溯}}public static void main(String[] args) {// TODO Auto-generated method stubCombinationsDemo5 cd = new CombinationsDemo5();int n = 4;int k = 2;List<List<Integer>> list = cd.combine(n, k);System.out.println(list.toString());}}
JAVA算法:给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合(JAVA)相关推荐
- 我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推。 现在,给定两个整数n和m,0<n<=m<=200,你的程序要计算第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数
我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推. 现在,给定两个整数n和m,0<n<=m<=200,你的程序要计算第n个素数到第m个素数之间所有的素数的和,包括第n ...
- 2021-10-20:分数到小数。给定两个整数,分别表示分数的分子numerator和分母denominator,以字符串形式返回小数。如果小数部分为循环小数,则将循环的部分括在括号内。输入: num
2021-10-20:分数到小数.给定两个整数,分别表示分数的分子numerator和分母denominator,以字符串形式返回小数.如果小数部分为循环小数,则将循环的部分括在括号内.输入: num ...
- 题目;我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推现在,给定两个整数n和m,你的程序要计算第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素
题目内容: 我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推. 现在,给定两个整数n和m,0<n<=m<=200,你的程序要计算第n个素数到第m个素数之间所有的素数的 ...
- A+B问题的题目描述如下:给定两个整数A和B,输出A+B的值。保证A、B及结果均在整型范围内。
A+B问题的题目描述如下:给定两个整数A和B,输出A+B的值.保证A.B及结果均在整型范围内 输入 一行,包含两个整数A,B,中间用单个空格隔开.A和B均在整型范围内. 输出 一个整数,即A+B的值. ...
- 我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推。 现在,给定两个整数n和m,0<n<=m<=200,你的程序要计算第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素
题目内容: 我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推. 现在,给定两个整数n和m,0<n<=m<=200,你的程序要计算第n个素数到第m个素数之间所有的素数的 ...
- 素数和(5分) 题目内容: 我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推。 现在,给定两个整数n和m,0<n<=m<=200,你的程序要计算第n个素数到第m个素数之间所有的素数的
素数和(5分) 题目内容: 我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推. 现在,给定两个整数n和m,0<n<=m<=200,你的程序要计算第n个素数到第m个素数 ...
- 给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。
记录自己坑了又坑的每一天: 原题: 给定两个整数,被除数 dividend 和除数 divisor.将两数相除,要求不使用乘法.除法和 mod 运算符. 返回被除数 dividend 除以除数 div ...
- 给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。
给定两个整数,被除数 dividend 和除数 divisor.将两数相除,要求不使用乘法.除法和 mod 运算符.返回被除数 dividend 除以除数 divisor 得到的商.示例 1:输入: ...
- 我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推。现在,给定两个整数n和m,0<n<=m<=200,你的程序要计算第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素
我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推. 现在,给定两个整数n和m,0<n<=m<=200,你的程序要计算第n个素数到第m个素数之间所有的素数的和,包括第n ...
最新文章
- 嵌入式实现 微信网页版 群发信息。
- 看看我最关心的动态库中到底有多少函数 - gdiplus.dll
- 现在不坚持,以后都会放弃
- 这场论文复现的华山论剑,谁能拔得头筹
- 洛咕 P4474 王者之剑
- win 2016 ssh_多台WIN10之间的SSH免密登录
- Socket网络编程--小小网盘程序(1)
- cortex M0 软件分层架构 RTOS
- linux c设置系统时间函数,Linux C 中获取local日期和时间 time()localtime()函数
- 让我们一起Go(二)
- VB小技巧 文本框中屏蔽系统右键菜单用自定义菜单代替自带右键菜单
- TypeScript笔记(3)—— 使用WebPack工具
- Java 类加载机制概述、类加载流程、自定义类加载器
- 权重计算方法二:熵权法(EWM)
- 系统自动化制作工资条,很简单,还能发送短信息
- 5.WireShark学习-WireShark中的时间显示
- 北京大学C语言学习第6天
- Wavel Sequence HDU - 6078 (dp)
- 《阿里云的这群疯子》
- 优化方法之黄金分割法(Python实现)
热门文章
- 实现字符串左旋和右旋的常见方法
- 基于FPGA的DVB-S2、DVB-S2X标准的 LDPC 编码IP、译码 IP core
- 正式环境使用Mysql MGR集群部署(一看就会)
- [笛卡儿积]业务中的复选框条件--输出所有的情况结果
- Linux 安装 scidavis
- 递归算法的原理(js)
- 阿里巴巴:今年营收 5000 亿,明年GMV要再增一万亿
- osgEarth的Rex引擎原理分析(七十三)从高程文件读取的高程信息如何填充rex的高程瓦片
- list集合移除指定元素
- python写乘法口诀表好记方法_乘法口诀表好记方法