题解 | #点菜问题#

点菜问题

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;

}

全部评论

相关推荐

夏目LTH:这个真的很看运气,多投吧。我从去年十二月底一直投到现在,之前没一个offer,结果两周前投的一家面试官聊的特别好,直接速通offer还给的SP待遇开的比我期望都够。
我的求职进度条
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
03-19 10:38
实力求职者:真的绷不住了,第一张霸总人设,第二张求生欲拉满
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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