1. 蛮力法是什么样的算法
http://wenku..com/view/9e1225333968011ca3009121.html自己看吧,很高端啊
2. 简要叙述蛮力法,基本常用的例子有哪些
蛮力法(brute force method,也称为穷举法或枚举法)是一种简单直接地解决问题的方法,常常直接基于问题的描述,所以,蛮力法也是最容易应用的方法。
蛮力法特性:
(1)理论上,蛮力法可以解决可计算领域的各种问题。
(2)蛮力法经常用来解决一些较小问规模的问题。
(3)对于一些重要的问题(如排序、查找、串匹配),蛮力法可以设计一些合理的算法,这些算法具有实用价值,而且不受输入规模的限制。
(4)蛮力法可以作为某类问题时间性能的下界,来衡量同样问题的其他算法是否具有更高的效率。
查找问题中使用蛮力法。
顺序查找:
是指在查找集合中一次查找值为k的元素,若查找成功,则给出元素在查找集合中的位置;若查找失败,则给出失败信息。
【想法】:将查找集合放在一维数组中,然后从数组的一端向另一端逐个将元素与带查找值进行比较,若相等,则查找成功,给出该元素在查找中的序号;若整个数组检测完仍未找到与带差值相等的元素,则查找失败,给出失败标志0。我们在查找过程中还要注意下标是否越界的问题。
算法的实现方法一:
int SeqSearch1(int r[] ,int n, int k) //数组r[1] r[n]中存放查找集合。
{
int i = n;
while(i>0 && r[i]!k) //注意检测比较位置是否越界。
{ i--; }
return i;
}
上述算法我们每次都要去判断数组的下标是否越界,为了避免在查找过程中每一次比较前都要判断查找位置是否越界,可以设置观察哨,即将待查值放在查找方向的“尽头”处,则比较位置i至多移动到下标0处。
3. 有四件商品,它们的价格之和是 7.11,价格之乘积也是 7.11,用蛮力法求解这4件东西的价格各是多少
答案:1.20,1.25,1.50,3.16
注意:如果你对数论一窍不通,那么以下的内容就不要看了。数学讲求的是严谨的推导,有的时候严谨到甚至会让人难于接受。
解:商品的价格,一般都有两位小数,所以我们认为它们的形式就限于X.XX的形式。而4件商品的价格,都不能大于7.11(不然之
和必大于7.11),从而也不能有3个小于1的(不然另一个必大于7.11才能使乘积为7.11),也就是说,任意3个数字之和不能小
于1,所以这4个数字都不能大于6.11。我们可以将4件物品的价格分别乘以100,凑成整数。
设4件商品的价格乘以100后,分别是A,B,C,D,则有A+B+C+D=711,A*B*C*D=711000000
这是数论中一种典型的问题:高次方程的整数解。这类问题限制条件越多,越难出现无穷多解的情况,有限解的数量也越少。
对于这类问题,一般采用试数的方法。操作过程是:把所有限制转换成为数学条件,然后逐一猜测答案并进行验算。而第一步:
转换为数学条件,直接关系到第二步验算的复杂程度。
首先对711000000做分解素因子处理711000000=26 *32 *56 *79
这里最令人注目的数字莫过于79了。把79的倍数列表如下:
0*79=0,1*79=79,2*79=158,3*79=237,4*79=316,
5*79=395,6*79=474,7*79=553,8*79=632,9*79=711
由于在4种物品的价格中,必有一个物品的价格为79的倍数,也就是上表中的一个数,而和数711也为79的倍数,所以另外3种物
品的价格之和也为79的倍数。该关系表示如下:
711(9*79)=M*79+N*79
这里,M*79是一种商品的价格,不妨令A=M*79,N*79是另3种商品价格之和,不妨令B+C+D=N*79。
显然M+N=9
下面我们来筛选一下M,N的值,在上面79的倍数表中,因为不能有3个数都小于100,所以N≠0,N≠1,这样M≠8,M≠9;而7并未出现
于711000000的素因子集合中,所以M≠7,N≠2。当然M≠0是显而易见的,所以N≠9。至此,M可以取的值为1,2,3,4,5,6,当然
这还远远不够的,我们需要进一步筛选M的值。
为了进一步筛选,以及后面的工作,我们引入一个着名的定理:若几个正整数的和一定,那么当且仅当它们相等时,它们的积取
最大值。
利用这个定理,下表是M取1~6时,B+C+D,B*C*D的要求值,以及B*C*D的理论最大值((B+C+D)/3)^3 :
M B+C+D B*C*D ((B+C+D)/3)^3
1 632 9000000=2*2*2*2*2*2*3*3*5*5*5*5*5*5 9349480.296
2 553 4500000=2*2*2*2*2*3*3*5*5*5*5*5*5 6263421.37
3 474 3000000=2*2*2*2*2*2*3*5*5*5*5*5*5 3944312
4 395 2250000=2*2*2*2*3*3*5*5*5*5*5*5 2282587.963
5 316 1800000=2*2*2*2*2*2*3*3*5*5*5*5*5 1168685.037
6 237 1500000=2*2*2*2*2*3*5*5*5*5*5*5 493039
可见,M=5,M=6时,B*C*D的理论最大值都不能取到要求值,所以M=5,M=6不满足题目要求。至此,M的值只能为1,2,3,4。
我们注意到,711000000的素因子中,只有2,3,5,79这四个素数,79已经分配给A。
B,C,D就只能使用2,3,5之中的素因子了。由于5的倍数,末位数字只能是0,5,我们可以把5作为问题的突破口。由于M≠5,所
以6个5都落在了B,C,D之中,下面分3种情况讨论:
4. 动态规划算法中的状态与蛮力法中的穷举对象,有什么异同
线性规模、作用。
1、异点:动态规划算法中的状态由于是动态的,所以线性规模会表现出很大的状态,蛮力法中的穷举对象适用于解决极小规模或者复杂度线性增长,而线性规模不会有很大的状态。
2、同点:动态规划算法中的状态与蛮力法中的穷举对象共同的作用就是为了解决问题。
5. 求算法中蛮力法的经典例题,越多越好!!!谢谢诸位提供者了,小女子感激不尽。
蛮力法是什么算法?你是计算机科学与技术专业的吗?这个算法是算法与数据结构这门课程中的算法吗?
6. 算法设计 线性规划 蛮力法 给出详细设计过程
解:#include<iostream>
using namespace std;
//在此现行规划列子:
//第一个约束方程的最大X1 max=4; Y1 max=4;
//第二个约束方程的最大X2 max=6 Y2 max=2;
//取X1,X2 的最小值 X=4+1,包括0
// Y1,Y2的最小值为y=2+1,包括0
//因此时间复杂度为 x*y=8
////////////////////////
int main()
{
int i,j,max=0;
for(i=0;i<=4;i++)
for(j=0;j<=2;j++)
{
if(max < 3*i+5*j)
{
if((i+j <=4) && (i+3*j<=6))
max=3*i+5*j;
}
}
cout<<max<<endl;
return 0;
}
7. 试从解空间、解向量的角度讨论蛮力法的设计思想和解题步骤
合成营院感的话,他也有一些像角度的一些讨论玛丽的方法,设计以后坚决的一些不走和他的。一些解决方法吧。
8. 蛮力法字符串匹配的平均效率怎么求出来是O(m+n)=O(n)
是O(m*n),字符串的比较是需要时间的,大约n次字符串比较,每次耗时m。