c语言中的全排列算法和组合数算法在实际问题中应用非常之广,但算法有许许多多,而我个人认为方法不必记太多,最好只记熟一种即可,一招鲜亦可吃遍天
全排列:
#include
void swap(int *p1,int *p2)
{
int t=*p1;
*p1=*p2;
*p2=t;
}
void permutation(int a[],int index,int size)
{
if(index==size)
{
for(int i=0;i
printf("%d ",a[i]);
printf("\n");
}
else
{
for(int j=index;j
{
swap(&a[j],&a[index]);
permutation(a,index+1,size);//此处用到递归思想
swap(&a[j],&a[index]);
}
}
}
int main()
{
int n;
scanf("%d",&n);
int a[n];
for(int i=0;i
a[i]=i+1;
permutation(a,0,n);
return 0;
}
组合:
#include
void combine(int n,int m,int a[],int b[],const int M)
{
for(int j=n;j>=m;j--)
{
b[m-1]=j-1;
if(m>1)combine(j-1,m-1,a,b,M);//用到了递归思想
else
{
for(int i=M-1;i>=0;i--)printf("%d ",a[b[i]]);
printf("\n");
}
}
}
int main()
{
int n,m;
scanf("%d%d",&n,&m);
int a[n];int b[m];
for(int i=0;i
a[i]=i+1;
const int M=m;
combine(n,m,a,b,M);
}
排列组合算法(PHP)
用php实现的排列组合算法.使用递归算法,效率低,胜在简单易懂.可对付元素不多的情况. //从$input数组中取$m个数的组合算法 function comb($input, $m) { if($m ...
C#语法灵活运用之排列组合算法
今天群里有朋友求一个排列组合算法,题目是给定长度,输出所有指定字母的组合. 如指定字母a.b.c.d.e.f,长度为2,则结果应为:aa.ab.ac ... ef.ff. 有朋友给出算法,很有特色: ...
sqlserver中几种典型的等待
为了准备今年的双11很久没有更新blog,在最近的几次sqlserver问题的排查中,总结了sqlserver几种典型的等待类型,类似于oracle中的等待事件,如果看到这样的等待类型时候能够迅速定位 ...
C/C++中几种经典的垃圾回收算法
1.引用计数算法 引用计数(Reference Counting)算法是每个对象计算指向它的指针的数量,当有一个指针指向自己时计数值加1:当删除一个指向自己的指针时,计数值减1,如果计数值减为0,说明 ...
Go语言中的代码重用 - 继承还是组合?
故事要从我在一个项目中,想要假装的专业一点而遇到的一个陷阱说起. 代码重用 在这个项目中,我们已经有了类似如下的代码: package main import ( "fmt" ) ...
曼孚科技:AI领域3种典型的深度学习算法
深度学习(Deep Learning)是机器学习(Machine Learning)领域中一个新的研究方向,引领了第三次人工智能的浪潮. 本文整理了深度学习领域3种典型的算法,希望可以帮助大家更好地 ...
python实现高效率的排列组合算法-乾颐堂
组合算法 本程序的思路是开一个数组,其下标表示1到m个数,数组元素的值为1表示其下标 代表的数被选中,为0则没选中. 首先初始化,将数组前n个元素置1,表示第一个组合为前n个数. 然后从左到右扫描数组 ...
C语言中几种类型所占字节数
其实C标准并没有具体给出规定哪个基本类型应该是多少个字节数,而且这个也与OS.编译器有关,比如同样是在32位操作系统,VC++的编译器下int类型为4个字节,而在tuborC下则是2个字节. 下面给出 ...
Java语言中两种异常的差别
Java提供了两类主要的异常:runtimeexception和checkedexception.所有的checkedexception是从java.lang.Exception类衍生出来的,而 ...
随机推荐
Demo 版
Demo1 美食网站 Demo2 12301智慧旅游公共服务平台 Demo3 react_and_koaexample
hdu3397 线段树 成段更新
这题真的呵呵了.敲了很长时间,调了很多bug,把0 1 输出,解决了.最后想取反,怎么搞都有bug, 最后还是看了大牛们的博客.不过这题真的敲得爽,调bug时基本把线段树过程全部弄了一遍. #incl ...
linux locate: command not found
装好系统发现使用locate查找文件,提示 -bash: locate: command not found yum install locate 无效,看来locate不是软件名称 [root@ce ...
【Android开发学习之路】
/wwj_748/article/category/1119319
magic_quotes_sybase(魔术引号开关)
magic_quotes_sybase,如果该选项在php.ini文件中是唯一开启的话,将只会转义%00为\0(即null字符).此选项会完全覆盖magic_quotes_gpc.如果同时开启这两个选 ...
ListView上下线添加