摘要: 典型的背包,不多说。#include <iostream>using namespace std;const int MAX_VALUE = 1000 * (1 + 2 + 5);int ans[MAX_VALUE + 1];int main (){ int coins[3],values[3] = {1,2,5}; while (scanf("%d%d%d",&coins[0],&coins[1],&coins[2]) != -1) { if (coins[0] == 0 && coins[1] == 0 &&a 阅读全文
posted @ 2012-08-11 21:19 peaceful 阅读(116) 评论(0) 推荐(0)
摘要: 第一次,只用了普通的深搜,超时。然后去看了别人的代码,发现可以用记忆搜索。用二维数组ans保存从某点出发可以积累到的food的最大数量,用深搜从起点开始处理。一个点的ans值一旦算出,之后就可以直接使用,不用再计算。#include <iostream>using namespace std;const int MAP_SIZE = 105;int n,k;int map[MAP_SIZE][MAP_SIZE],ans[MAP_SIZE][MAP_SIZE];int direction_x[5] = { 0,-1,1,0,0 };/* 上下左右 */int direction_y[ 阅读全文
posted @ 2012-08-11 19:34 peaceful 阅读(176) 评论(0) 推荐(0)