分享
 
 
 

从含有m个元素的集合中任选n个的算法

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

问题:从含有M个元素的集合中任选n个的排列组合。

思路:利用M进制的数组来表示

源程序如下(在C-Free 3.5中测试)

/*-----------------------------------------------------------------------

Author : RainFly(傲月寒星)

3-25-05

Describe:关于幂集的一个算法,也是从m个元素中任选n个

的算法.

if you have other ideas,please email me:yan_diao266071@163.com

Test in C-Free 3.5

------------------------------------------------------------------------*/

#include <iostream>

#include <vector>

#include <stdlib.h>

#include <string>

using namespace std;

void ssort(int n,int str[],int m,int N);

int main()

{

int i,N,j=0,m,count,temp,i_begin=1,i_end,M,flag=0;

vector <string> iInt;

string ss;

cout<<"How many elements do you want the set include:";

cin>>M;

cout<<"Please input "<<M<<"elements:";

int * str=new int[M];

vector <string>::iterator vi;

for (i = 0; i <M; i++)

{

cin>>ss;

iInt.push_back(ss);

}

cout<<endl;

cout<<"The elments of this set is:";

for (vi = iInt.begin(); vi != iInt.end(); vi++)

cout<<*vi<<" ";

cout<<endl;

/*

output n elements

*/

cout<<"Please input a number(0~"<<M<<"):";

cin>>N;

//insure the scope of i

for(i=0;i<N-2;i++)

i_begin=i_begin*M;

i_end=i_begin*M*M;

if(i_begin==1)

i_begin=0;

if(N==1)

i_end=M;

for(i=i_begin;i<i_end;i++)

{

flag=0;

ssort(i,str,M,N);

for(j=0;j<N-1;j++)

for(m=j+1;m<N;m++)

if(str[j]>=str[m])

flag=1;

if(flag)

continue;

cout<<"<";

for(j=0;j<N;j++)

{

if(j!=N-1)

cout<<iInt[str[j]]<<",";

else

cout<<iInt[str[j]];

}

cout<<">";

}

delete [] str;

return 0;

}

void ssort(int n,int str[],int m,int N)

{

int i=0,count=0,temp;

while(n>=0)

{

if(n<m)

{

str[i]=n;

count++;

break;

}

str[i]=n%m;

n=n/m;

count++;

i++;

}

//sort this array

if(N>1&&count<N)

str[i+1]=0;

for(i=0;i<N/2;i++)

{

temp=str[i];

str[i]=str[N-i-1];

str[N-i-1]=temp;

}

}

Example:

How many elements do you want the set include:5

Please input 5 elements:a1 a2 a3 a4 a5

The elments of this set is:a1 a2 a3 a4 a5

Please input a number(0~5):2

<a1,a2><a1,a3><a1,a4><a1,a5><a2,a3><a2,a4><a2,a5><a3,a4><a3,a5><a4,a5>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有