hdu 1078 搜索

来源:互联网 发布:python编程培训 编辑:程序博客网 时间:2024/05/01 00:09

2014/9/29


 搜索好久没写了啊。


//Ñô¹â´ÌÍ´Ë«íø#include<stdio.h>#include<string.h>#include<cmath> #include<algorithm>#include<iostream>#include<queue>#include<stack>#include<map>#include<climits>#include<vector>using namespace std;typedef long long ll;  #define f(x,y,i) for(int i = x;i < y; i++)#define ff(x,y,i) for(int i = x;i  <= y; i++)#define F(x,y,i) for(int i = x; i >= y; i--)#define FF(x,y,i) for(int i = x; i > y; i++)#define lson pos<<1,l,mid#define rson pos<<1|1,mid+1,r#define sc(n) scanf("%d",&n)#define pr(n) printf("%d\n",n)#define met(n,m) memset(n, m, sizeof(n)) #define mod 10007const int inf = INT_MAX;const int N=500;int Max(int a,int b){return a>b?a:b;}int Min(int a,int b){return  a<b?a:b;}int vis[N][N]; int s[N][N];int dp[N][N];int ss[4][2]={1,0,-1,0,0,-1,0,1};int n , k;int dfs(int x,int y){int maxn = 0, ans = 0;if(!dp[x][y]){ for(int i = 1; i <= k; i++)     {     for(int j = 0;j < 4; j++)     {     int a, b;     //printf("%d %d\n",ss[j][0],ss[j][1]);     a = x + i * ss[j][0];     b = y + i * ss[j][1];     if(a>=0&&a<n&&b>=0&&b<n &&s[x][y] < s[a][b])     {     ans = dfs(a ,b);     if(maxn < ans)maxn = ans;     }     }     dp[x][y] = maxn + s[x][y];     }}    return dp[x][y];}int main(){    int     m ;while(~scanf("%d%d",&n,&k)){   if(n<0&&k<0)    {    break ;      }      met(dp,0);      f(0,n,i)      f(0,n,j)      {      scanf("%d",&s[i][j]);      }             printf("%d\n",dfs(0,0));}      return 0;}


0 0
原创粉丝点击