非常典型的一道01背包问题,太久没做,写出代码+找BUG花了一个多小时 : )
注意边界 注意边界。
还有小米OJ系统的评判,提交一直显示超时,遂去查看别人的提交,发现超时的提交都是有用到 getchar 或者 !=EOF。。
莫名超时,花了好多时间结果问题出在这里,很痛苦。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stddef.h>
#include <ctype.h>
#define max(a, b) ((a) > (b) ? (a) : (b))
int main()
{int w[61];int v[61];int dp[61][1001];int total;scanf("%d", &total);// input.int val, nums = 1;char s;while (~scanf("%d%c", &val, &s)){w[nums] = val;++nums;if (s != ' ')break;};nums = 1;while (~scanf("%d%c", &val, &s)){v[nums] = val;++nums;if (s != ' ')break;};// calint i, j;for (i = 1; i <= nums; i++){for (j = 1; j <= total; j++){if (j - w[i] >= 0)dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - w[i]] + v[i]);elsedp[i][j] = dp[i - 1][j];}}printf("%d", dp[nums][total]);system("pause");return 0;
}
本文发布于:2024-01-28 07:48:58,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/17063993445897.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |