社区
C++ 语言
帖子详情
一个排列组合的问题,在线等,马上结贴????
yszmax
2004-11-22 02:28:01
从N个数中任取m个进行排列,有几种?
...全文
701
11
打赏
收藏
一个排列组合的问题,在线等,马上结贴????
从N个数中任取m个进行排列,有几种?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xuzheng318
2004-11-22
打赏
举报
回复
ok
以发,请查收, 结帖给分!
yszmax
2004-11-22
打赏
举报
回复
感谢!!!!!!
yszmax
2004-11-22
打赏
举报
回复
噢,万分感谢!
以前我也看过的,但是马上要交了,来不及了,大家不要bs我。
能把代码发给我吗?yszmax@chinaren.com,注释不乱码的。谢谢
xuzheng318
2004-11-22
打赏
举报
回复
#include <stdio.h>
// N个数的全排列:
typedef void (*MyOutputFunc)(int numb, char out[]);
void Iterate(int n, char in[], char out[], int nmax, int& numb, MyOutputFunc f)
{
if( n == 0 )
{
f(numb++, out);
return;
}
for(int i = 0; i < nmax; i++)
{
if( in[i] != -1 )
{
out[nmax-n] = in[i];
in[i] = -1;
Iterate(n-1, in, out, nmax, numb, f);
in[i] = out[nmax-n];
}
}
}
void PrintP(int numb, char out[])
{
printf("[%08d]: %s\n", numb, out);
}
#define MAX 62
main()
{
char in[MAX+1], out[MAX+1];
int numb = 0;
for( int i = 0; i < MAX; i++ )
{
if( i < 26 ) in[i] = 'a'+i;
else if( i < 52 ) in[i] = 'A'+i-26;
else in[i] = '0'+i-52;
out[i] = -1;
}
in[i] = out[i] = 0;
Iterate(MAX, in, out, MAX, numb, PrintP);
printf("\nAll items are %d\n", numb);
return 0;
}
carylin
2004-11-22
打赏
举报
回复
输入每个元素的值。英语很烂,呵呵……
以前写的
Flood1984
2004-11-22
打赏
举报
回复
n(n-1)(n-2)*...(n-m+1)种
yszmax
2004-11-22
打赏
举报
回复
carylin(别信我,我在说谎) ( )
牛人,好快
yszmax
2004-11-22
打赏
举报
回复
please input elem of a ?
是什么意思啊 ?
carylin
2004-11-22
打赏
举报
回复
注释乱码了,楼主自己改改好了。
yszmax
2004-11-22
打赏
举报
回复
up
carylin
2004-11-22
打赏
举报
回复
以前写的,不知合适不
#include<iostream.h>
#include<stdlib.h>
#include<conio.h>
#include<iomanip.h>
void inition(int k,int number[]) //³õʼ»¯
{
int i;
for(i=0;i<k;i++) //Ò»¿ªÊ¼ÏÈÑ¡¶¨Ç°k ¸öÔªËØ
number[i]=1;
}
void output(int a[],int n,int number[],int **b,int count)
//Êä³öÒ»ÖÖ×éºÏ½á¹û
{
int i,k=0;
for(i=0;i<n;i++)
if(number[i]){
b[count][k]=a[i];
k++;
cout<<setw(3)<<a[i];
}
cout<<endl;
}
void main()
{
int count=0; //¼ÆÊý×éºÏ¸öÊý
int n=6,k=4,size=15,i,j,l,m;
int number[100]={0}; //¸¨ÖúÊý×é,¼Í¼±»Ñ¡ÖеÄÔªËØ
//ÕâÀﶨÒå×î¶àÔªËØÎª100
int *a;
int **b;
bool findfirst,end=false,swap;
cout<<"please input n:"<<endl;
cin>>n; //ÊäÈëÊý×é´óСn
a=new int[n];
cout<<"please input elem of a:"<<endl;
for(i=0;i<n;i++)
cin>>a[i]; //ÊäÈëÊý×éÔªËØ
cout<<"please input k(<n):"<<endl;
cin>>k; //ÊäÈëm
size=1;
for(i=0,j=n;i<k;i++) size*=j--;
for(i=1;i<=k;i++) size/=i;
b=new int*[size]; //·ÖÅä±£´æ½á¹ûµÄ¶þάÊý×é
for(i=0;i<size;i++) b[i]=new int[k];
inition(k,number); //³õʼ»¯
output(a,n,number,b,count);
count++; //µÚÒ»×é½á¹ûÊä³ö
j=n;
while(!end)
{
findfirst=false;
swap=false; //±êÖ¾¸´Î»
for(i=0;i<j;i++)
{
if(!findfirst && number[i])
{
l=i; //l ¼Ç¼ÏÂɨÃèµ½µÄµÚÒ»¸öÊý
findfirst=true; //ÉèÖñêÖ¾
}
if(number[i] && !number[i+1]) //´Ó×óµ½ÓÒɨÃèµÚÒ»¸ö¡°10¡±×éºÏ
{
number[i]=0;
number[i+1]=1;
swap=true; //ÉèÖý»»»±êÖ¾
for(m=0;m<i-l;m++)
number[m]=number[m+l];
for(m=i-l;m<i;m++)
number[m]=0; //½»»»ºó½«Ö®Ç°µÄ¡°1¡±È«²¿Òƶ¯µ½×î×ó¶Ë
if(l==i && i+1==n-k) //Èç¹ûµÚÒ»¸ö¡°1¡±ÒÑ¾ÒÆ¶¯µ½ÁËm-n
end=true; //µÄλÖã¬ËµÃ÷ÕâÊÇ×îºóÒ»¸ö×éºÏÁË¡£
}
if(swap) //½»»»Ò»´Îºó¾Í²»ÓüÌÐøÕÒ¡°10¡±×éºÏÁË
break;
}
output(a,n,number,b,count);
count++;
}
cout<<"total number is: "<<count<<endl; //´òÓ¡×ܵÄ×éºÏÊý
getch();
}
visio教程PDF
2.1.2 准备打开
一个
已经存在的文件 2.2 基本下拉菜单 2.2.1 File下拉菜单 2.2.2 Tools下拉菜单 2.2.3 Help下拉菜单 2.3 基本工具栏按钮 2.3.1 New Drawing按钮 2.3.2 Open按钮 2.3.3 Open ...
Powerbuilder9.0实用教程源代码
1.5 用5分钟制作
一个
简单实例 22 1.5.1 实例运行界面 22 1.5.2 新建
一个
工作空间对象 22 1.5.3 新建
一个
应用程序对象 23 1.5.4 创建窗体 23 1.5.5 为应用程序添加open事件代码 25 1.6 小结 27 1.7 习题 27 ...
python输出字符串
排列组合
代码
“刀”,“捣”,“蹈”,“倒”,“岛”,“祷”,“导”,“到”,“稻”,“悼”,“道”,“盗”,“德”,“得”,“的”,“蹬”,“灯”,“登”,“等”,“瞪”,“凳”,“邓”,“堤”,“低”,“滴”,“迪”,“敌”,“笛”,“狄...
java输出字符串
排列组合
代码
“葛”,“格”,“蛤”,“阁”,“隔”,“铬”,“个”,“各”,“给”,“根”,“跟”,“耕”,“更”,“庚”,“羹”,“埂”,“耿”,“梗”,“工”,“攻”,“功”,“恭”,“龚”,“供”,“躬”,“公”,“宫”,“弓”,“巩...
C++ 语言
65,206
社区成员
250,519
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章