算法最佳组合
A. 【C语言算法】求最优解
#include<stdio.h>
voidmain()
{
doubleV;
printf_s("请输入V: ");
scanf_s("%lf",&V);
intm,n,p;
intM,N,P;
doubledelta=10000.0;
for(m=0;m<=16;m++)
{
for(n=0;n<=256;n++)
{
for(p=1;p<=4096;p++)
{
doubled=m*n/(double)p-V;
if(d<0)
d=-d;
if(d<delta)
{
delta=d;
M=m;
N=n;
P=p;
}
}
}
}
printf_s("最优解:M=%d,N=%d,P=%d ",M,N,P);
}
B. 排列组合公式及算法
P(m,n)=n*(n-1)(n-2)...(n-m+1)=n!/(n-m)!【n个元素中,取m个的排列】
C(m,n)=P(m,n)/P(m,m)=n(n-1)(n-2)...(n-m+1)/m!
=n!/[(n-m)!*m!].【n个元素中取m个元素的组合】
满意请把我列为最佳答案~~~~
C. 算法求助 通过车辆集合和液厂集合 计算最合理的匹配组合
这是二分图最大匹配问题的推广,我们构造二分图如下:
A部分包含m个点表示m辆车,B部分包含Σai个顶点表示每个工厂的ai个副本,B中的每个顶点和A中的每个点相连赋边权为对应的时长。我们的问题等价为求此二分图中权值最小的最大匹配,可以用匈牙利算法:http://en.wikipedia.org/wiki/Hungarian_algorithm 解决。
更新
----------------------------------
刚才发现一个神网站,在线匈牙利算法演示:http://www.hungarianalgorithm.com/solve.php
D. 求排列组合公式及算法
如果只能按顺序排列
1.不重复
C(6,4)=C(6,2)=15
2.
有一个可重复C(6,1)*C(6,3)=120
这样的组合一共有15+120=135种
如果可以乱顺序排列
1.不重复
A(6,4)=360
2.
有一个可重复A(6,1)*A(6,3)=720
这样的组合一共有360+720=1080种
E. 排列组合算法,要求从一堆数中任取m个数组合使得m个数的和最接近某个数
典型的组合问题,解法有递归、回溯等等递归法较简单,代码如下: void combine(int a[], int n, int m, int b[], int M); 参数:a 存放候选数字n 总项数m 取出项数b 存放选出结果M = m
#include "stdio.h"#define MAX 100 void combine(int a[], int n, int m, int b[], int M); int main(void){ int i; int a[MAX], b[MAX]; for (i = 1; i < 100; i++) a[i - 1] = i; combine(a, 5, 4, b, 4);} void combine(int a[], int n, int m, int b[], int M){ int i, j; for (i = n; i >= m; i--) { b[m - 1] = i - 1; if (m > 1) combine(a, i - 1, m - 1, b, M); else { for (j = M - 1; j >= 0; j--) printf("%d ", a[b[j]]); printf("\n"); } }}
其他方法可查阅相关资料。
F. 数学的排列组合算法加公式拜托各位了 3Q
不能重复的c(6,4)
c(6,5)
1,2,3......,n
n个数中
任取m个组合
c(n,m)
能重复的
6^4
6^5
1,2,3,。。。。n,n个数中,取m个组合(可重复)
n^m
采纳哦
G. 14个数字每7个一组一共有多少种排列方式 最好把算法写给我谢谢
1.从14个数字每7个为一组,共有:14x13x12x11x10x9x8/7x6x5x4x3x2x1=3432(组);——这是组合的组数; 2.若还要求将每组进行排列的话,则每组不同的排列就会有:7x6x5x4x3x2x1=5040(种排列); 3.那么这3432组号码可以组成:3432x5040=17297280(种)不同的排列组合!这个问题不但牵涉到组合,而且还涉及到组合后的排列问题.
H. 关于全组合算法
参照我的回答:VBA 6~15个数中,任选6个数排列组合:http://..com/question/289742264.html
调整一下递归函数Private Sub zuhe(L As Integer, M As Integer)调用的M参数取值(可重复与不可重复有一点区别)