题解 | #点菜问题#

点菜问题

http://www.nowcoder.com/practice/b44f5be34a9143aa84c478d79401e22a

#include using namespace std;

const int MAXN = 1000 + 10;

int weight[MAXN]; int value[MAXN]; int dp[MAXN][MAXN];

int main() { int n, m; //输入物品的数量和背包的容量 while (cin >> m >> n) { for (int i = 1; i <= n; i++) { //默认从下标为1的位置开始 cin >> weight[i] >> value[i]; //输入重量和价值 } //对dp数组进行初始化 for (int i = 0; i <= n; i++) { dp[i][0] = 0; //背包容量为零的情况下 } for (int j = 0; j <= m; j++) { dp[0][j] = 0; //不选物品的情况下 } for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { if (j < weight[i]) { dp[i][j] = dp[i - 1][j]; } else { dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i]); }

		}
	}
	cout << dp[n][m] << endl;
}

system("pause");
return 0;

}

全部评论

相关推荐

重生我想学测开:嵌入式的问题,我准备入行京东外卖了
点赞 评论 收藏
分享
争当牛马还争不上
码农索隆:1.把简历改哈 2.猛投,狠投 3.把基础打牢 这样你在有机会的时候,才能抓住
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务