社区
C++ 语言
帖子详情
一个排列组合的问题,在线等,马上结贴????
yszmax
2004-11-22 02:28:01
从N个数中任取m个进行排列,有几种?
...全文
649
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 ...
Visio 2000 技术大全
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按钮 ...
asp.net知识库
一个时间转换的
问题
,顺便谈谈搜索技巧 .net中的正则表达式使用高级技巧 (一) C#静态成员和方法的学习小
结
C#中
结
构与类的区别 C#中 const 和 readonly 的区别 利用自定义属性,定义枚举值的详细文本 Web标准和ASP...
电子设计入门常用元器件及芯片.pdf
三极管是在一块半导体基片上制作两个相距很近的 PN
结
,两个 PN
结
把整块半导体分成三部分,中间部分是基区,两侧部分是发射 区和集电区,
排列
方式有 PNP 和 NPN 两种,实际中更常用 NPN 型。按材质分为 硅管(压降...
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 ...
C++ 语言
64,685
社区成员
250,491
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章