只有當局部最優跟全局最優解一致的時候,貪心法才能給出正確的解。 (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分)
給定一段文本中的 4 個字符 (u,v,w,x) 及其出現頻率 (fu,fv,fw,fx)。若對應的哈夫曼編碼為 u: 00, v: 010, w: 011, x: 1,則下列哪組頻率可能對應 (fu,fv,fw,fx)?(5分)
編程題第一題
#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;
}