求一个长度为n的数组中长度为m的所有排列组合。
2018-03-27 13:22
615 查看
//求一个长度为n的数组中长度为m的所有排列组合。
#include <iostream>
#include <stack>
using namespace std;
stack<string> st;
void Grial(string a[], int m,int n,int length)
{
if (st.size() == length)
{
stack<string> temp = st;
while (temp.empty() == false)
{
cout << temp.top() << " ";
temp.pop();
}
cout << endl;
return;
}
else
{
for (int i = m; i < n; i++)
{
st.push(a[i]);
Grial(a, i+1,n,length);
st.pop();
}
}
}
int main()
{
string a[] = {"A","B","C","D","E"};
Grial(a,0, sizeof(a) / sizeof(int),2);
}
#include <iostream>
#include <stack>
using namespace std;
stack<string> st;
void Grial(string a[], int m,int n,int length)
{
if (st.size() == length)
{
stack<string> temp = st;
while (temp.empty() == false)
{
cout << temp.top() << " ";
temp.pop();
}
cout << endl;
return;
}
else
{
for (int i = m; i < n; i++)
{
st.push(a[i]);
Grial(a, i+1,n,length);
st.pop();
}
}
}
int main()
{
string a[] = {"A","B","C","D","E"};
Grial(a,0, sizeof(a) / sizeof(int),2);
}
相关文章推荐
- 实现求出若干整数之和为500的连续整数(如98,99,100,101,102)的所有组合&&产生一个int数组,长度为100,并向其中随机插入1~100,要求不能重复
- 排列组合-打印出一个数组的元素的所有排列方式-算法
- 提高篇项目1.3—随机数创建一个长度为16的整型数组a并初始化,删除数组中所有能被3整除的元素
- 一个数字数组中所有的排列(java)
- 给定一个无序整形数组,找出其中所以三个数之和为0的所有组合
- java__给定一个升序排列的数组,去掉重复的数,并输出新的数组的长度
- 有两个升序排列的数组A1和A2,给A1开辟的剩余内存有足够空间容纳A1,请实现一个函数,把A2中所有数字插入到A1中,并且是按照升序排列的
- .定义两个数组,首先把两个数组合并成一个新数组,然后把新数组中的所有元素逆序排列,需要实现的效果如图-2所示。
- 两个正续排列的数组,组合成一个正续排列的数组
- 从长度为n的数组中(元素互不相同)任意选择m个数的所有组合
- 给定一个数组,求数组中所有元素的可能组合(每个元素只出现一次),使其和等于给定数的解决办法
- 题目:输入一个字符数组,输出所有的排列。
- 求一个数组里面所有和等于m的组合
- JAVA获得一个数组的指定长度的排列
- 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。
- java__给定一个升序排列的数组,去掉重复的数,并输出新的数组的长度
- 求一个数组的全排列,所有组合
- 有两个升序排列的数组A1和A2,给A1开辟的剩余内存有足够空间容纳A1,请实现一个函数,把A2中所有数字插入到A1中,并且是按照升序排列的
- 笔试题:写一个有序整数数组两两之和等于某个数所有组合
- 从n个数组中任意选取一个元素的所有组合的Java实现(组合问题)