Combination(n,m)

2024-03-13 23:28
文章标签 combination

本文主要是介绍Combination(n,m),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

描述

输入

输出

样例输入

样例输出


描述

input a string(no more than 10characters),select m char from the string,output the permutation characters in lexicographic order.

输入

input a string,and integer m; m less then the length of the string. if m=0, output nothing ,and you can input another string

输出

output the permutation strings in lexicographic order.

样例输入
123
1
2
3
0
样例输出
1
2
3
12
13
23
123

思路

题意是给我们一个字符串s,给你整数m,将s分成长度为m的子串,注意这题不是全排列,而是组合数,那我们要用到递归思想

#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include<vector>
using namespace std;
void Combination(string input, int start, int r, string ans, vector<string>& result) {//r代表所截取的字符串长度,ans代表正在构建的组合if (r == 0) {result.emplace_back(ans);return;}for (int i = start; i <= input.length() - r; i++) {ans.push_back(input[i]);Combination(input, i + 1, r - 1, ans, result);//递归调用取出m个字符的组合ans.pop_back();//删除字符串最后一个元素}
}
vector<string> getCombinations(string input, int m) {vector<string> result;Combination(input, 0, m, "", result);return result;
}
int main() {string input;while (cin >> input) {int m;vector<string> combinations;while (cin >> m && m) {combinations = getCombinations(input, m);for (auto s : combinations) cout << s << endl;combinations.clear();}}return 0;
}

这篇关于Combination(n,m)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/806527

相关文章

LeetCode - 40. Combination Sum II

40. Combination Sum II  Problem's Link  ---------------------------------------------------------------------------- Mean:  给你一个待选集合s和一个数n,选出所有相加之和为n的组合.(每个元素只能选一次) analyse: 递归求解. 在递归进入

LeetCode - 39. Combination Sum

39. Combination Sum  Problem's Link  ---------------------------------------------------------------------------- Mean:  给你一个待选集合s和一个数n,让你找出集合s中相加之和为n的所有组合.(每个数可选多次) analyse: 作此题需对递归有一定的

LeetCode 40 Combination Sum II

题意: 集合中的每个数字只能使用一次,求出所有数字和为target的方案。 思路: 如果把集合中的数字计数,问题会变得和 http://blog.csdn.net/houserabbit/article/details/72677176 几乎一致。 我的方法思路与计数思路几乎一致,只不过我没有合并数字,而是枚举每种数字个数的时候只取排在后面的数字,这样就保证了方案不重复。 代

LeetCode第40题之Combination Sum II

这一题主要是在上一题的基础上解决重复解的问题。 C++代码: #include <iostream>#include <algorithm>#include <vector>using namespace std;class Solution {private://res保存满足题意的结果vector<vector<int>> res;//保存当前的一种方案vector<int> me

LeetCode第39题之Combination Sum(两种方法)

思路:两种方法都是利用递归回溯,第二方法在第一种方法的基础上对原始数据先进行排序,这样可以剪枝,加快计算速度。第一种方法在LeetCode上测试运行的时间是24ms,第二种方法运行时间为16ms。 方法一: #include <iostream>#include <algorithm>#include <vector>using namespace std;class Solution

leetcode之组合数(Combination Sum)

Combination Sum //代码1public class Solution {public List<List<Integer>> combinationSum(int[] candidates, int target) {List<List<Integer>> result = new ArrayList<List<Integer>>();if(candidates.length

解决Bad Request,This combination of host and port requires TLS.问题

问题场景: 无法访问swagger: 无法调用方法: 解决方法: 把访问的http修改为https就可以了 swagger同理,修改为https:

Leetcode 040 Combination Sum II (隐式图搜索)

题目连接:Leetcode 040 Combination Sum II  解题思路:与 Leetcode 039 思路相似,不过需要对数组进行预处理。预处理过程为,排序并去重,去重需要记录每个数的个数。而在搜索过程中,枚举每个数后,还有枚举它的个数,与Leetcode 039不同的是,Leetcode 039中只要剩余的和够,可能枚举若干个,而本题中,个数的最大值取决于原先数组中它的个数。

Leetcode 039 Combination Sum(隐式图搜索)

题目连接:Leetcode 039 Combination Sum 解题思路:隐式图搜索,状态包括当前使用到的数值下标(对应值一定使用过),和剩余的和。每次枚举当前下标往后的一个数,并枚举使用它的个数,对每个合理状态插入队列。而当剩余的和为零时,记录答案。 class Solution {public:vector<vector<int>> combinationSum(vector<int>

..\MYLIB\modbus.c(49): error: #84: invalid combination of type specifiers

在keil中添加相应的文件出现以下问题时 ..\MYLIB\modbus.c(49): error:  #84: invalid combination of type specifiers 是由于:在定义的函数体的前面有一个变量类型