22.算法是由若干条指令组成的有穷序列,且要满足输入、 输出 、确定性和 有限性 四条性质。
23、大整数乘积算法是用 分治法 来设计的。
24、以广度优先或以最小耗费方式搜索问题解的算法称为 分支限界法 。
25、舍伍德算法总能求得问题的一个解 。
26、 贪心选择性质 是贪心算法可行的第一个基本要素,也是贪心算法与动态规划算法的主要区别。
27.快速排序算法是基于 分治策略 的一种排序算法。
28.动态规划算法的两个基本要素是. 最优子结构 性质和 重叠子问题 性质 。
30.回溯法是一种既带有 系统性 又带有 跳跃性 的搜索算法。
31.分支限界法主要有 队列式(FIFO) 分支限界法和 优先队列式 分支限界法。
32.分支限界法是一种既带有 系统性 又带有 跳跃性 的搜索算法。
33.回溯法搜索解空间树时,常用的两种剪枝函数为 约束函数 和 限界函数 。
34.任何可用计算机求解的问题所需的时间都与其 规模 有关。
35.快速排序算法的性能取决于 划分的对称性 。
三、算法填空
1.背包问题的贪心算法
void Knapsack(int n,floatM,float v[],float w[],float x[])
{
Sort(n,v,w);
int i;
for (i=1;i<=n;i++) x[i]=0;
float c=M;
for (i=1;i<=n;i++) {
if (w[i]>c) break;
x[i]=1;
c - =w[i];
}
if (i<=n) x[i]=c/w[i];
}
2.最大子段和: 动态规划算法
int MaxSum(int n, int a[])
{
int sum=0, b=0; //sum存储当前最大的b[j], b存储b[j]
for(int j=1; j<=n; j++) {
if (b>0) b+= a[j] ;
elseb=a[i]; ; //一旦某个区段和为负,则从下一个位置累和
if(b>sum) sum=b;
}
return sum;
}
3.贪心算法求装载问题
template<classType>
voidLoading(int x[], Type w[], Typec, int n)
{
int *t = new int [n+1];
;
for (int i = 1; i <= n; i++) x[i] =0;
for (int i = 1; i <= n &&w[t[i]] <= c; i++)
{x[t[i]] = 1;
;}
}
4.贪心算法求活动安排问题
template<classType>
voidGreedySelector(int n, Type s[], Type f[], bool A[])
{
A[1]=true;
int j=1;
for (int i=2;i<=n;i++) {
if (s[i]>=f[j])
{A[i]=true;
j=i;
}
else A[i]=false;
}
}
5.快速排序
template<class Type>
void QuickSort (Typea[], int p, int r)
{
if (p<r) {
int q=Partition(a,p,r);
QuickSort (a,p,q-1); //对左半段排序
QuickSort (a,q+1,r); //对右半段排序
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-23877-10.html
还是喜欢我们最伟大的领袖啊
主席的话“人不犯我