算法:编程求打印N个元素中取M个的全组合(不限语言C/C++,Java,PHP,Python,Js,C#,VB,Perl,Ruby)
样例输入32#3个元素取2个123#3个数据样例输出121323==========样例输入33#3个元素取3个123#3个数据样例输出123==========样例输入...
样例输入
3 2 #3个元素取2个
1 2 3 #3个数据
样例输出
1 2
1 3
2 3
==========
样例输入
3 3 #3个元素取3个
1 2 3 #3个数据
样例输出
1 2 3
==========
样例输入
3 1 #3个元素取1个
1 2 3 #3个数据
样例输出
1
2
3
强调,是组合不是排列,不允许重复组合..
任一语言的实现。只要实现小规模的整型元素M在[0, 5]区间 ,N在[0, 5]区间就行
主要看算法 展开
3 2 #3个元素取2个
1 2 3 #3个数据
样例输出
1 2
1 3
2 3
==========
样例输入
3 3 #3个元素取3个
1 2 3 #3个数据
样例输出
1 2 3
==========
样例输入
3 1 #3个元素取1个
1 2 3 #3个数据
样例输出
1
2
3
强调,是组合不是排列,不允许重复组合..
任一语言的实现。只要实现小规模的整型元素M在[0, 5]区间 ,N在[0, 5]区间就行
主要看算法 展开
展开全部
#include <iostream>
#include <algorithm>
using namespace std;
void printArray(int32_t a[], uint32_t len){
for(uint32_t i=0;i<len;i++) cout<<a[i]<<' ';
cout<<endl;
}
void combine(
int32_t a[], uint32_t a_len, uint32_t a_pos,
int32_t b[], uint32_t b_len, uint32_t b_pos)
{
if(b_pos>=b_len) printArray(b,b_len);
else for(uint32_t ai=a_pos; ai<a_len; ai++){
b[b_pos]=a[ai];
combine(a,a_len,ai+1,b,b_len,b_pos+1);
}
}
int main()
{
int32_t a[]= {1,2,3,4};
int32_t b[4];
uint32_t a_len=sizeof(a)/sizeof(int32_t);
for(uint32_t i=1;i<=a_len;i++){
cout <<a_len<<"选"<<i<<endl;
combine(a,a_len,0,b,i,0);
cout<<endl;
}
return 0;
}
============
4选1
1
2
3
4
4选2
1 2
1 3
1 4
2 3
2 4
3 4
4选3
1 2 3
1 2 4
1 3 4
2 3 4
4选4
1 2 3 4
#include <algorithm>
using namespace std;
void printArray(int32_t a[], uint32_t len){
for(uint32_t i=0;i<len;i++) cout<<a[i]<<' ';
cout<<endl;
}
void combine(
int32_t a[], uint32_t a_len, uint32_t a_pos,
int32_t b[], uint32_t b_len, uint32_t b_pos)
{
if(b_pos>=b_len) printArray(b,b_len);
else for(uint32_t ai=a_pos; ai<a_len; ai++){
b[b_pos]=a[ai];
combine(a,a_len,ai+1,b,b_len,b_pos+1);
}
}
int main()
{
int32_t a[]= {1,2,3,4};
int32_t b[4];
uint32_t a_len=sizeof(a)/sizeof(int32_t);
for(uint32_t i=1;i<=a_len;i++){
cout <<a_len<<"选"<<i<<endl;
combine(a,a_len,0,b,i,0);
cout<<endl;
}
return 0;
}
============
4选1
1
2
3
4
4选2
1 2
1 3
1 4
2 3
2 4
3 4
4选3
1 2 3
1 2 4
1 3 4
2 3 4
4选4
1 2 3 4
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询