hdu 1078 记忆化搜索

来源:互联网 发布:四快速算法多少钱一套 编辑:程序博客网 时间:2024/05/22 08:03

第一次记忆化搜索,实际上就是DP 就搜索

这个题目要注意的是,他说每次可以走K步,在这K步中是不能转弯的

#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <queue>using namespace std;int dp[105][105],map[105][105];int dir[4][2] = {0,1,0,-1,1,0,-1,0};int n,k;int dfs(int x,int y){int i,j,xx,yy,ans = 0;if(!dp[x][y]){for(i = 1; i <= k; i++){for(j = 0; j < 4; j++){xx = x + dir[j][0]*i;yy = y + dir[j][1]*i;if(xx < 0 || yy < 0 || xx >= n || yy >= n) continue;if(map[xx][yy] <= map[x][y]) continue;ans = max(ans,dfs(xx,yy));}}dp[x][y] = ans + map[x][y];}return dp[x][y];}int main(){//freopen("t.txt","r",stdin);int i,j;while(~scanf("%d%d",&n,&k)){memset(dp,0,sizeof(dp));if(n == -1 && k == -1) break;for(i = 0; i < n; i++){for(j = 0; j < n; j++){scanf("%d",&map[i][j]);}}printf("%d\n",dfs(0,0)); }}


1 0
原创粉丝点击