当前位置:首页 » 编程软件 » 组合的编程

组合的编程

发布时间: 2022-05-22 02:31:22

c语言编程排列组合

void Show(int n,int len ,char str[], char p[],int *i){/*函数功能说明: 密码穷举法 递归算法参数说明:len 密码可选元素的个数,实际等于 strlen(str); n 密码位数。 STR[]密码表。 *p 密码排列组合的临时存档*/int a;n--;for(a=0; a < len; a++){p[n]=str[a]; if(n==0)printf("%d:%s ",(*i)++,p); if(n0)Show(n,len , str,p,i);}} /*驱动程序 用于测试*/ int main(void){char str[]="abcdef";//密码表 可选元素集合可根据选择修改 int n=4;//密码位数,根据具体应用而定。 int len=strlen(str);//用于密码元素集合计数。 char p[20];//存放排列组合的密码,用于输出。 int num=0;//存放统计个数的整数值, int *i=&num;//计数器 地址。 p[n]='\0';//这个不用说啦。 printf("\n%d 位密码,每个密码有%d个选择的话,共有:%d个组合。\n",n,len,*i);return 0;}
以上回答你满意么?

② 排列组合C语言编程思路

定义一个结构体一维数组,每个下标表示不同的盒子
{int A;
int B;
int C;
int D;
}
,先穷举A的可能性
再依次穷举B、C、D的可能性
最后输出

③ 计算组合数 如何编程

如果是指从m个不同元素中取出n(n≤m)个元素的所有组合的个数 的话
#include"stdio.h"
int fac(int n) /*阶乘函数*/
{
int s,i;
s=1;
for(i=1;i<=n;i++)
{
s*=i;
}
return(s);
}

main()
{
int n,m,c;
scanf("%d %d",&m,&n);
c=fac(m)/(fac(n)*fac(m-n));
printf("%d\n",c);
}

用的是C语言

④ 怎么编程实现排列组合

publicstaticStringreverse1(Stringstr)
{
returnnewStringBuffer(str).reverse().toString();
}
2.最常用的方法:
publicstaticStringreverse3(Strings)
{
char[]array=s.toCharArray();
Stringreverse="";//注意这是空串,不是null
for(inti=array.length-1;i>=0;i--)
reverse+=array[i];
returnreverse;
}
3.常用方法的变形:
publicstaticStringreverse2(Strings)
{
intlength=s.length();
Stringreverse="";//注意这是空串,不是null
for(inti=0;i<length;i++)
reverse=s.charAt(i)+reverse;//在字符串前面连接,而非常见的后面
returnreverse;
}
4.C语言中常用的方法:
publicstaticStringreverse5(Stringorig)
{
char[]s=orig.toCharArray();
intn=s.length-1;
inthalfLength=n/2;
for(inti=0;i<=halfLength;i++){
chartemp=s[i];
s[i]=s[n-i];
s[n-i]=temp;
}
returnnewString(s);//知道char数组和String相互转化
}

⑤ 排列组合编程问题

这个程序是求n的月之数,程序直接给出答案是1<<(n-1))+(n-1)*(1<<(n-2))。
C语言里1<<x等于2的x次方,所以这个答案很容易看出来其实是2^(n-1)+(n-1)*2^(n-2),^是乘方运算。
下面给出上式的推导过程:
因为最高的一位必然为1,所以位数为n的二进制数的个数为2^(n-1)个(这是很基本的,你要是连这个都不知道为什么我就没啥好说了)。
一、只考虑最高位,所有的数都是1,所以一共有2^(n-1)个1。
二、不考虑最高位,一共有(n-2)位。以最低位为例,所有数中,有一半最低位是0,另一半最低位是1,所以只考虑最低位时,一共有2^(n-1) / 2 = 2^(n-2)个1。同理,只考虑除了最高位的剩下的n-2位中的任意一位时,所有数中一共有2^(n-2)个1。这样加起来有(n-2) * 2^(n-2)个1。

综合一二可知,n的月之数为2^(n-1)+(n-1)*2^(n-2)。即1<<(n-1))+(n-1)*(1<<(n-2))。

⑥ 排列组合编程

我承认我错了,是120种
我这种方法还算巧妙吧:

#include <stdio.h>

int main()
{
int i,j,k;
int sum = 0;
for(i = 9; i>=2;i--)
for(j = i-1; j >=1; j--)
for(k = j-1; k>=0;k--)
printf("%d%d%d\n",i,j,k);
return 1;
}

文本,你去抄下书就搞定了

⑦ 用C编程排列组合

#include <stdio.h>
#define MAX_NUM 26
char ach15Char[6] ="12345"; // 一定要有序的!
int comb[MAX_NUM];
void combination(int m, int n)
{
int i, j;
for (i = m; i >= n; i--)
{
comb[n] = ach15Char[i-1]; /* 选择当前的“头”元素 */
if (n > 1)
{
/* 进入下一次更小的组合问题 */
combination( i - 1, n - 1);
}
else
{
/* 满了需要的组合数,输出 */
for (j = comb[0]; j > 0; j--)
{
printf("%c", comb[j]);
}
printf("\t");
}
}
return;
}

int main(int argc, char *argv[])
{
comb[0] = 3;
combination( 5, comb[0]); /* C(15, 7) */
return 0;
}

⑧ 编程中排列组合的问题(4个数字中(数字范围0-9),每3个为一组,允许数字重复使用,求所有组合)

从4个数字中取3个数,且能重复选用。所以每取一位都有4种选择,共有4³=64个数

⑨ 一个排列组合的编程问题

其实去取那五个不连续的数相对简单点,然后在从全部数字当中去除取出的那几个数字,剩下的就是我们要存到文件的了。

现在,问题就变成了:1~14中取5个不连续的数字。简单点,我们拿1~8取3个不连续的数来举例子:
1 3 5
1 3 6
1 3 7
1 3 8
1 4 6
1 4 7
1 4 8
1 5 7
1 5 8
1 6 8
2 4 6
2 4 7
2 4 8
2 5 7
2 5 8
2 6 8
3 5 7
3 5 8
3 6 8
4 6 8

发现规律了嘛?程序如下^_^

<SCRIPT LANGUAGE="VBS">
'''''''''''''''''''''''''
Sub q (n, max_n, v, max_v)
For i=v To max_v
b(n)=i
If n<max_n Then
call q (n+1, max_n, i+2, max_v)
Else
For j=1 To max_v
ary(j)=j
Next
For j=1 To max_n
ary(b(j))=0
Next
For j=1 To max_v
If ary(j)>0 Then document.write (cstr(ary(j))+" ")
Next
document.write ("<br>")
c=c+1
End If
Next
end Sub

'''''''''''''''''''''''''
Dim b(5)
Dim ary(14)
call q (1,5,1,14)
</SCRIPT>

代码用VB Script写的,可以直接存为html文件在浏览器里执行。vb和vbs语法一致,只是,输出部分要改为文件操作,忘冰兄弟就自己辛苦点,独立完成余下的部分吧。

加油!

⑩ C语言中组合公式的编程

int function(int n,int m)
{
int i, ret = 1;

for(i=0;i<m;i++)
ret *= (n-i);
return ret;
}

void main(void)
{
int n = 15, m =5;
int ret;

ret = function(15,5) / function(5,5);
printf("%d\n",ret);
}

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:705
制作脚本网站 发布:2025-10-20 08:17:34 浏览:968
python中的init方法 发布:2025-10-20 08:17:33 浏览:676
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:828
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:737
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1076
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:308
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:188
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:875
python股票数据获取 发布:2025-10-20 07:39:44 浏览:829