关于重复元素的排列组合重复情况

《有关重复的排列组合的解题归纳》_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&10W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
《有关重复的排列组合的解题归纳》
总评分4.2|
用知识赚钱
试读已结束,如果需要继续阅读或下载,敬请购买
定制HR最喜欢的简历
你可能喜欢排列组合之相同元素分配问题
责任编辑:
声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。
今日搜狐热点记录各种算法与想法以便自己更好的成长
计数与概率基础(容斥、有重复元素的全部排列、可重复选择的全排列、杨辉、二项式定理、欧拉函数)
1、容斥原理。
如果班里有15个人喜欢物理,10个人喜欢英语,16个人喜欢数学,那么班里面有多少个人呢?
10+16+15显然是错的,因为存在一个人既喜欢物理也喜欢英语,那么就把这些重复加的人的数量给剪掉。
也就是减去既喜欢物理又喜欢英语的人,既喜欢英语又喜欢数学的人,既喜欢数学又喜欢物理的人,这样就把刚才多加进去的人全部剪掉了,
可是这样既喜欢英语又喜欢数学又喜欢英语的这么一个人,他在这次剪的过程剪了2次,那么就再把喜欢3个科目的人加起来,这就是容斥原理。
也就是|A∪B∪C|=|A|+|B|+|C|-|A∩B|-|B∩C|-|C∩A|+|A∩B∩C|。
2、有重复元素的全排列。
给定k个元素,其中第i个元素有ai个,求全排序个数。
令所有n i 之和为n,再设答案为x。首先做全排列,然后把所有元素编号,其中第s种元素
编号为1~n s (例如,有3个a,两个b,先排列成aabba,然后可以编号为a 1 a 3 b 2 b 1 a 2 )。这样
做以后,由于编号后所有元素均不相同,方案总数为n的全排列数n!。根据乘法原理,得到
了一个方程:n 1 !n 2 !n 3 !…n k x!=n!,移项即可。
也就是先全部都包括在里面,然后把重复的去除。
3、有重复选择的组合。
二项式定理。
C(K,N)=K/(N-K+1)C(K-1,N)。可以想想为什么有这个公式。
然后可以根据这个公式递推出C(K,N)。
#include &iostream&
int main(){
int a,i,j,k,n,m,b[100];
for(i=1;i&=n;i++)
b[i]=b[i-1]*(n-i+1)/i;
for(i=0;i&=n;i++)
cout && b[i] &&" ";
}其中n为多少就是杨辉三角的第几+1行。
不难看出,约数的个数意思也就是其各个因子的个数,如对于84=(2^2)*(3^1)*(7^1).
也就是其既可以整除2和整除2^2,3,7。也就是相当与其唯一分解式各个式的指数可以取0、1、2、。。。到a1,84也就是对于2,可以取0、1、2,
对于3,可以取0、1,对于7,可以取0、1。也就是其因子可以由哪些素数组成。
欧拉函数,给定一个N,找出所有n中与n互素的数,也就是这两个数的最大公约数为1。
用容斥原理。首先从总数n中分别减去是p 1 ,
p 2 , … , p k 的倍数的个数(对于素数p来
说,“与p互素”和“不是p的倍数”等价),即 ,然后加上“同时是两个素因子
的倍数”的个数 ,再减去“同时是3个素因子的倍数”——写成一个“学术
味比较浓”的公式就是:
其可以写为=(1-1/p1)(1-1/p2)(1-1/p3)...的形式。
1、从1开始到n,找到gcd(i,n)==1的那个数,然后打上标记,再把其的倍数打上标记,循环到n,可以筛选出互素数。
#include &iostream&
bool vis[50000];
int gcd(int a,int b){
//cout && a && "\t" && b &&
return b==0?a:gcd(b,a%b);
int main(){
memset(vis,0,sizeof(vis));
int a,i,j,k,n,m,b[100];
&& gcd(n,5) &&
for(i=1;i&=n;i++)if(!vis[i]&&gcd(n,i)!=1)
for(j=i;j&=n;j+=i){
// cout && j &&
for(i=1;i&=n;i++){
if(!vis[i])
cout && f1&&
2、如对84,n=n/i*(i-1),意思是减去为i倍数的数,
没有更多推荐了,可重复排列组合算法
[问题点数:50分,结帖人wfcwscwfc]
本版专家分:42
CSDN今日推荐
本版专家分:68350
2008年10月 C/C++大版内专家分月排行榜第一2008年6月 C/C++大版内专家分月排行榜第一2008年5月 C/C++大版内专家分月排行榜第一2008年4月 C/C++大版内专家分月排行榜第一
2009年8月 C/C++大版内专家分月排行榜第三2009年7月 C/C++大版内专家分月排行榜第三2009年2月 C/C++大版内专家分月排行榜第三
本版专家分:7040
2008年3月 C/C++大版内专家分月排行榜第三
本版专家分:3431
本版专家分:42
本版专家分:57224
2011年6月 总版技术专家分月排行榜第三
2011年11月 专题开发/技术/项目大版内专家分月排行榜第一2011年10月 专题开发/技术/项目大版内专家分月排行榜第一2011年9月 专题开发/技术/项目大版内专家分月排行榜第一2011年8月 专题开发/技术/项目大版内专家分月排行榜第一2011年7月 专题开发/技术/项目大版内专家分月排行榜第一2011年6月 C/C++大版内专家分月排行榜第一
2011年7月 C/C++大版内专家分月排行榜第二2011年5月 专题开发/技术/项目大版内专家分月排行榜第二
2011年5月 C/C++大版内专家分月排行榜第三2008年1月 C/C++大版内专家分月排行榜第三2007年12月 C/C++大版内专家分月排行榜第三
本版专家分:3431
本版专家分:3431
本版专家分:42
本版专家分:3431
本版专家分:0
匿名用户不能发表回复!|
CSDN今日推荐}

我要回帖

更多关于 多重相同元素排列组合 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信