4-1
算法的复杂性有时间复杂性和空间复杂性之分。
4-2
若存在两个正的常数c和n0,对于任意n≥n0,都有T(n)≤c×f(n),则称T(n)= Ω (f(n))。
4-3
用贪心算法求解的问题一般具有两个重要性质是:
贪心原则和最优子结构性质。
4-4
分支限界法采用
深度
优先的方式搜索解空间,回溯法采用
广度
优先的方式搜索解空间。
4-5
通常,
贪心算法、分支限界、回溯的求解策略是自顶向下求解,
动态规划是自底向上的递推求解。
4-6
回溯法搜索解空间树时,常用的两种剪枝函数为
约束函数和限界函数
4-7
分支限界法主要有
队列式 分支限界法和 优先队列式 分支限界法。
5-1
如下程序的功能是求解n后问题,请将程序补充完整。(每空2分,共10分)
#include <iostream.h>
#include <math.h>
int n,count,*x;
void Swap(int& a,int &b){
int t=a;a=b;b=t; }
bool Check(int i){
//检查当前第i个皇后的放法是否可行
for (int k=1;k<i;k++)
if (
(a[i]==a[j])||(abs(a[i]-a[j])==i-j)
) return false;
else return true
;
}
void Output(){
//以表格的形式输出一个解(x1,x2,…,xn),皇后所在的行列位置为“Q”,其它位置输出“_”。
count++;
for ( int i=1;i<=n;i++){
for (j=1;j<=n;j++)
if (x[i]==j) cout<<" Q";
else cout<<"_";
cout<<endl;
}
}
void Queen(int i){
if (i>n)Output();
else
for (int j=i;j<=n;j++){
x[i] = j
;
if