| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 840 人关注过本帖
标题:再次拜求排列问题输出算法,难度级别:3级
只看楼主 加入收藏
ngf2006
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-8-17
收藏
 问题点数:0 回复次数:5 
再次拜求排列问题输出算法,难度级别:3级

我有一道排序题,恳请各位高手帮忙解决,不胜感激!
大家都知道排列组合的一个公式C m n ,它等于m的阶乘除以n的阶乘和(m-n)的阶乘,这个结果等于m个事物中取出n个事物的所有取法数目总和。我现在想打印出每种取法,怎么做?

具体一个例子,如有abcdef 共6个位置,我拿2个苹果放在这六个中的其中2个位置上,请编程打印出这2个苹果的放法?

更进一步,编程求出C17 +C26 +C35 的每一种排列方式

例, C17 的排列方法输出为7种,编程后输出结果为1000000,0100000,0010000,0001000,0000100,0000010,0000001.
C26的排列方法有15种,编程后输出结果为
110000,011000,001100,000110,000011;101000,100100,100010,100001;010100,010010,010001;001010,001001;000101;
同理,编程输出C35的10种排列方法.
这样得出公式C17 +C26 +C35 的32种排列方法的输出结果.
当然,用0、1表示或其他字符表示均可,主要是排列方法的输出。

进而推算出通式的编程。。依次类推C19 +C28+C37+C46,C111+C210+C39+C48+C57等都能求出。
基本公式是C12n-1+C22n-2+C32n-3+……+C n-1 n+1
重申:本题不是求排列的总和,即上式的总和,而是打印输出各种排列方法.

附件里是此题祥析,拜托各位大侠了!谢谢谢谢!!!!

搜索更多相关主题的帖子: 算法 排列 难度 级别 输出 
2006-08-26 12:00
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 
#include"stdio.h"
#include "conio.h"
#include "stdlib.h"
#define MAX_SIZE 20
void printset(int n,int k);
int main(void)
{
int n,i;
puts("input a number:");
scanf("%d",&n);
for(i=1;i<n;printset(2*n-i,i),i++);
getch();
return 0;
}
void printset(int n,int k)
{
int set[MAX_SIZE];
int i,pos=k-1;
int *info=NULL;
if((info=(int *)malloc(sizeof(int)*n))==NULL) exit(1);
for(i=0;i<n;info[i]=0,i++);
for(i=0;i<k;set[i]=i,info[set[i]]=1,i++);
for(i=0;i<n;printf("%d",info[i]),i++);
printf("\n");
while(1)
{
set[k-1]==n-1?(pos--):(pos=k-1);
set[pos]++;
for(i=pos+1;i<k;set[i]=set[i-1]+1,i++);
for(i=0;i<n;info[i]=0,i++);
for(i=0;i<k;info[set[i]]=1,i++);
for(i=0;i<n;printf("%d",info[i]),i++);
printf("\n");
if(set[0]>=n-k) break;
}
free(info);
}

[此贴子已经被作者于2006-8-26 16:02:20编辑过]


对不礼貌的女生收钱......
2006-08-26 14:12
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 

花了半个小时替您写,100个金币也算是很便宜了。


对不礼貌的女生收钱......
2006-08-26 14:13
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 

饿,您买不起啊
那算了,以后您记得还我100金币


对不礼貌的女生收钱......
2006-08-26 16:01
ngf2006
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-8-17
收藏
得分:0 



俄没有金币,,不过俄也很礼貌,送你一束花吧,谢谢,我回头好好研究你的大作!!
2006-08-27 20:19
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 

没事,您以后记得还就行.
您再测试下程序有无问题吧。
程序是输入一个n值,打印出C12n-1+C22n-2+C32n-3+……+C n-1 n+1的排列方式.


对不礼貌的女生收钱......
2006-08-27 20:44
快速回复:再次拜求排列问题输出算法,难度级别:3级
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.042188 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved