算法第四章作業


1-1

只有當局部最優跟全局最優解一致的時候,貪心法才能給出正確的解。 (3分)

         
1-2

令S為活動選擇問題(Activity Selection Problem)中所有活動的集合。則一定存在S的某個最大相容活動子集是包含了最早結束的活動am​​的。(3分)

         
1-3

令S為活動選擇問題(Activity Selection Problem)中所有活動的集合。則最早結束的活動am​​一定被包含在S的所有最大相容活動子集中。(3分)

         
1-4

在活動選擇問題(Activity Selection Problem)中,令 S 為活動的集合。以“每次收集最遲開始的活動”為貪心原則,可以正確找到 S 中相互兼容活動的最大規模的子集合。 (3分)

         
 
1-5

令 C 為字母集,其中每個字符 c 有對應頻率 c.freq。若 C 的大小為 n,則其中任一字符 c的最優前綴編碼長度都不會超過 n1. (3分)

         
 
 
2-1

給定一段文本中的4個字符(a, b, c, d)。設a和b具有最低的出現頻率。下列哪組編碼是這段文本可能的哈夫曼編碼? (5分)

2-2

給定一段文本中的 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;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM