导航:首页 > 源码编译 > cnm算法c语言

cnm算法c语言

发布时间:2022-07-26 10:34:10

Ⅰ 急求C语言编辑题:Cnm=n!/m!(n-m)!其中n,m 由键盘输入。要求设计一个函数fac(n)求某个正整数n 的阶乘。

//用递归函数处理
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

long int fac(int n)
{
long int sum=0;
if(n==1)
sum=1;
else
sum=n*fac(n-1);
return sum;
}
void main()
{
long int c=0;
int n,m;
printf("please input n=");
scanf("%d",&n);
printf("please input m=");
scanf("%d",&m);
if((n<0)||(m<0)||((n-m)<0))
{
printf("input num is error\n");
}
else
{
c=fac(n)/fac(m)/fac(n-m);
printf("%ld\n",c);
}

}

Ⅱ 数学里的Cnm用C语言怎么表示

希望能帮到你。来自http://blog.sina.com.cn/s/blog_64b236da0100vg33.html

#include <stdio.h>
#include <stdlib.h>
//从n个元素的数组a中,取m个元素的组合
bool zuhe(char a[],int n,int m)
{//p[x]=y 取到的第x个元素,是a中的第y个元素
int index,i,*p;

p=(int*)malloc(sizeof(int)*m);
if(p==NULL)
{
return false;
}
index=0;
p[index]=0;//取第一个元素
while(true)
{
if(p[index]>=n)
{//取到底了,回退
if(index==0)
{//各种情况取完了,不能再回退了
break;
}
index--;//回退到前一个
p[index]++;//替换元素
}
else if(index==m-1)
{//取够了,输出
for(i=0;i<m;i++)
{
printf("%c",a[p[i]]);
}
printf("\n");
p[index]++; //替换元素
}
else
{//多取一个元素
index++;
p[index]=p[index-1]+1;
}

}
free(p);
return true;
}
//对n个元素的数组a,进行全排列
bool pailie(char a[],int n)
{//p[x]=y 取到的第x个元素,是a中的第y个元素
int i,j,temp,*p;

p=(int*)malloc(sizeof(int)*n);
if(p==NULL)
{
return false;
}
for(i=0;i<n;i++)
{//初始排列
p[i]=i;
}
while(true)
{//循环m=n!次
//输出一种排列情况
for(i=0;i<n;i++)
{
printf("%c",a[p[i]]);
}
printf("\n");
//从后向前查找,看有没有后面的数大于前面的数的情况,若有则停在后一个数的位置。
for(i=n-1;i>0 && p[i]<p[i-1];i--);

//若没有后面的数大于前面的数的情况,说明已经到了最后一个排列,返回
if(i==0) break;

//从后查到i,查找大于p[i - 1]的最小的数,记入j
for(j=n-1;j>i && p[j]<p[i-1];j--);

//交换p[i-1]和p[j]
temp=p[i-1];p[i-1]=p[j];p[j]=temp;

//倒置p[i]到p[n-1]
for(i=i,j=n-1;i<j;i++,j--)
{//交换p[c]和p[d]
temp=p[i];p[i]=p[j];p[j]=temp;
}
}
free(p);
return true;
}
int main()
{
char a[]="ABCD";

zuhe(a,4,2);//组合
pailie(a,3);//排列
return 0;
}

Ⅲ 求数据结构 c语言算法代码

满二叉树计算结点个数的公式是2^n-1.
条件:满二叉树的结点个数为20到40之间的素数
通过判断得知n=5成立·也只有n等于5的时候结果才在20到40之间·因为n=5,所以二叉树的叶结点的个数为2^(n-1)=2^4=16个

n是树的层次
代码你就自己写吧,说的已经很明白了

Ⅳ c语言算法

#include <stdio.h>
int main()
{
int i, j;
int res = 0;
for (i = 3; i <= 200; i += 2)
{
for (j = 2; j < i; j++)
{
if (i % j == 0)
{
res += i;
break;
}
}
}
printf("%d\n", res);
return 0;
}

Ⅳ 求C语言新手学的算法

建议去看看刘如佳的《算法竞赛入门经典》这本书,讲了很多的基础算法,很是算法初学者。希望你对你有所帮助。

Ⅵ 常用的C语言算法有哪些

算法是一个自成体系的东西,和c语言没有本质联系。
而且算法是为了解决问题的,所以也就无所谓常用不常用。
如果你的程序需要排序功能,那么排序就算常用算法,排序算法有冒泡,快速和归并等。

Ⅶ 用C++编程输出Cnm的值。Cnm=m!/(m-n)!n!

Cnm真的不用算3个阶乘,真的按照公式来反而麻烦了。
Cnm就是从m往下乘n个数然后除以n的阶乘。
int C(int n, int m)
{
if(n>m/2)
return C(m-n, m);
if(n==0)
return 1;
int x=1,y=1;
for(int i=0;i<n;i++)
{
x*=m-i;
y*=i+1;
}
return x/y;
}

Ⅷ C语言的9大算法是什么

貌似没这么一说哈,我们学算法设计与分析时,算法数量绝对两位数以上,而且算法不分语言,例如,人工智能书上,大神级的人物写书都是使出自己吃奶得劲避免由于语言的差异产生的麻烦,所以全用伪代码,而且相当的“伪”,有的甚至要直接用自然语言叙述算法,所以算法不分语言!
------------------------------------------------------------------------------
想了解算法的话,你可以找本算法的书来看一下,推荐:《算法设计与分析》清华大学出版社,吕国英主编,讲的很好..............

阅读全文

与cnm算法c语言相关的资料

热点内容
优信二手车解压后过户 浏览:58
Windows常用c编译器 浏览:776
关于改善国家网络安全的行政命令 浏览:830
安卓如何下载网易荒野pc服 浏览:651
javainetaddress 浏览:100
苹果4s固件下载完了怎么解压 浏览:996
命令zpa 浏览:281
python编译器小程序 浏览:940
在app上看视频怎么光线调暗 浏览:537
可以中文解压的解压软件 浏览:588
安卓卸载组件应用怎么安装 浏览:908
使用面向对象编程的方式 浏览:336
程序员项目经理的年终总结范文 浏览:925
内衣的加密设计用来干嘛的 浏览:428
淮安数据加密 浏览:289
魔高一丈指标源码 浏览:979
松下php研究所 浏览:166
c回调java 浏览:396
梦幻端游长安地图互通源码 浏览:742
电脑本地文件如何上传服务器 浏览:309