#include<bits/stdc++.h>
using namespace std ;
const int maxn = 1000005;
int n,m;
int w[maxn],c[maxn];
int f(int m,int n) {
if(n==0) return 0;
int x=f (m,n-1) ;
int y=0;
if(m-w[n]>=0) y=f(m-w[n],n-1)+c[n];
return max(x,y);
}
int main() {
cin>>m>>n;
for(int i=1; i<=n; i++)
cin>>w[i]>>c[i];
cout<<f(m,n);
return 0;
}
假设输入的n是不超过200的正整数,m是不超过30的正整数,w[i]、e[i]都是不超过5000的正整数,完成下面的判断题和单选题:
判断题
1) main函数里的m和n变量,与f函数里面的m和n变量,占用内存中的不同空间。( )
2) 输入m为0,此程序可能会死循环或发生运行错误。()
选择题
3) 若输入2 2 1 2 3 4则输出为( )。
4) 若输入10 2 1 2 3 4则输出为( )。
5) 若输入10 4 2 1 3 3 4 5 7 9则输出为( )。
6) (4分)若输入20 10,接下来的输入是1到20,则输出为( )。