POJ1088(滑雪)
生活随笔
收集整理的這篇文章主要介紹了
POJ1088(滑雪)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目鏈接
動態規劃題。
題目大意:給定一個二維數組,數組中每個數代表一個高度,每次只能向相鄰且高度下降的方向移動,求最長的移動距離。
View Code1 #include <stdio.h> 2 #include <memory.h> 3 #define MAX(a,b) ((a)>(b)?(a):(b)) 4 #define N 100 5 int dx[4]={0,0,1,-1}; 6 int dy[4]={1,-1,0,0}; 7 int h[N][N],n,m; 8 int c[N][N]; 9 int dp(int i,int j) 10 { 11 int ni,nj,d; 12 if(c[i][j]) return c[i][j]; 13 c[i][j]=1; 14 for(d=0;d<4;d++) 15 { 16 ni=i+dx[d],nj=j+dy[d]; 17 if(ni<0 || nj<0 || ni>=n || nj>=m || h[ni][nj]>=h[i][j]) continue; 18 c[i][j]=MAX(c[i][j],dp(ni,nj)+1); 19 } 20 return c[i][j]; 21 } 22 int main() 23 { 24 int i,j,ans; 25 while(~scanf("%d%d",&n,&m)) 26 { 27 for(i=0;i<n;i++) 28 { 29 for(j=0;j<m;j++) scanf("%d",&h[i][j]); 30 } 31 ans=1; 32 for(i=0;i<n;i++) 33 { 34 for(j=0;j<m;j++) ans=MAX(ans,dp(i,j)); 35 } 36 printf("%d\n",ans); 37 memset(c,0,sizeof(c)); 38 } 39 return 0; 40 }
?
轉載于:https://www.cnblogs.com/algorithms/archive/2012/04/25/2469695.html
總結
以上是生活随笔為你收集整理的POJ1088(滑雪)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 现在印度电影可以投资么?有没有什么好电影
- 下一篇: 求一个关于夏天的个性签名!