題目1152:點菜問題
時間限制:1 秒
記憶體限制:32 兆
特殊判題:否
提交:969
解決:500
題目描述:北大網路實驗室經常有活動需要叫外買,但是每次叫外買的報銷經費的總額最大為c元,有n種菜可以點,經過長時間的點菜,網路實驗室對於每種菜i都有乙個量化的評價分數(表示這個菜可口程度),為vi,每種菜的**為pi, 問如何選擇各種菜,使得在報銷額度範圍內能使點到的菜的總評價分數最大。
注意:由於需要營養多樣化,每種菜只能點一次。
輸入:輸入的第一行有兩個整數c(1 <= c <= 1000)和n(1 <= n <= 100),c代表總共能夠報銷的額度,n>代表能點菜的數目。接下來的n行每行包括兩個在1到100之間(包括1和100)的的整數,分別表示菜的》**和菜的評價分數。
輸出:輸出只包括一行,這一行只包含乙個整數,表示在報銷額度範圍內,所點的菜得到的最大評價分數。
樣例輸入:
90 420 25
30 20
40 50
10 18
40 2
25 30
10 8
樣例輸出:
9538
2023年北京大學計算機研究生機試真題
//一維陣列
#include#include#includeusing namespace std;
int a[1002],b[102],c[102];
int main()
{ int n,m,i,j;
while(cin>>n>>m)
{memset(a,0,sizeof(a));
for(i=1;i<=m;i++)
cin>>b[i]>>c[i];
for(i=1;i<=m;i++)
for(j=n;j>=b[i];j--)
a[j]=max(a[j],a[j-b[i]]+c[i]);
cout<#include#includeusing namespace std;
int a[102][1002];
int b[102],c[102];
int main()
{ int n,m,i,j;
while(cin>>n>>m)
{memset(a,0,sizeof(a));
for(i=1;i<=m;i++)
cin>>b[i]>>c[i];
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
if(j>=b[i])
a[i][j]=max(a[i-1][j],a[i-1][j-b[i]]+c[i]);
else a[i][j]=a[i-1][j];
cout<
九度OJ 1152 點菜問題
北大網路實驗室經常有活動需要叫外買,但是每次叫外買的報銷經費的總額最大為c元,有n種菜可以點,經過長時間的點菜,網路實驗室對於每種菜i都有乙個量化的評價分數 表示這個菜可口程度 為vi,每種菜的 為pi,問如何選擇各種菜,使得在報銷額度範圍內能使點到的菜的總評價分數最大。注意 由於需要營養多樣化,每...
九度OJ 題目1152 點菜問題
一.題目描述 北大網路實驗室經常有活動需要叫外買,但是每次叫外買的報銷經費的總額最大為c元,有n種菜可以點,經過長時間的點菜,網路實驗室對於每種菜i都有乙個量化的評價分數 表示這個菜可口程度 為vi,每種菜的 為pi,問如何選擇各種菜,使得在報銷額度範圍內能使點到的菜的總評價分數最大。注意 由於需要...
九度 oj 題目1104 整除問題
1.2.有兩種做法 第一種做法,把n!做素數分解,用cnt1 i 代表n!中含有的primes i 的因子個數 如果n primes i x,那麼在n!中就有x個數含有primes i 為它的因子,但是這x個數中有的數含有多個primes i 為它的因子,所以還需要不斷的做 cnt1 i x pri...