只有当局部最优跟全局最优解一致的时候,贪心法才能给出正确的解。 (3分)
令S为活动选择问题(Activity Selection Problem)中所有活动的集合。则一定存在S的某个最大相容活动子集是包含了最早结束的活动am的。(3分)
令S为活动选择问题(Activity Selection Problem)中所有活动的集合。则最早结束的活动am一定被包含在S的所有最大相容活动子集中。(3分)
在活动选择问题(Activity Selection Problem)中,令 S 为活动的集合。以“每次收集最迟开始的活动”为贪心原则,可以正确找到 S 中相互兼容活动的最大规模的子集合。 (3分)
令 C 为字母集,其中每个字符 c 有对应频率 c.freq。若 C 的大小为 n,则其中任一字符 c的最优前缀编码长度都不会超过 n−1. (3分)
给定一段文本中的4个字符(a, b, c, d)。设a和b具有最低的出现频率。下列哪组编码是这段文本可能的哈夫曼编码? (5分)
- a: 000, b:001, c:01, d:1
- a: 000, b:001, c:01, d:11
- a: 000, b:001, c:10, d:1
- a: 010, b:001, c:01, d:1
给定一段文本中的 4 个字符 (u,v,w,x) 及其出现频率 (fu,fv,fw,fx)。若对应的哈夫曼编码为 u: 00, v: 010, w: 011, x: 1,则下列哪组频率可能对应 (fu,fv,fw,fx)?(5分)
- 15, 23, 16, 45
- 30, 21, 12, 33
- 41, 12, 20, 32
- 55, 22, 18, 46
编程题第一题
#include <iostream>
using namespace std;
int main()
{
int n,k;//定义n和k。
int a[100];//定义数组保存各个加油站之间的距离。
int ans=0;//定义加油次数。
cin>>n>>k;//输入n和k。
int r=n;//定义一个存储油箱内油量的变量。
for(int i=0;i<k+1;i++)
{
cin>>a[k-i];
}//输入每个加油站之间的距离。
for(int i=0;i<k+1;i++)
{
if(a[i]<=r)
{
r=r-a[i];
}
else
{
r=n-a[i];
ans++;
}
}
cout<<ans;//输出结果
}
编程题第二题
#include <iostream>
#include <map>
using namespace std;
int a[100010],b[100010],c[100010],d[100010],n,now,sum,Max;
map<int,int>e;
int main(){
freopen("sche.in","r",stdin);
freopen("sche.out","w",stdout);
cin>>n;
for(int i=1;i<=n;i++){
scanf("%d%d",&a[i],&b[i]);
c[2*i-1]=a[i];
c[2*i]=b[i];
}
sort(c+1,c+2*n+1);
for(int i=1;i<=2*n;i++)
if(!e[c[i]])
e[c[i]]=++now;
for(int i=1;i<=n;i++)
d[e[a[i]]]++,
d[e[b[i]]]--;
for(int i=1;i<=now+1;i++)
sum+=d[i],
Max=max(Max,sum);
cout<<Max;
fclose(stdin);
fclose(stdout);
//system("pause");
return 0;
}