nyoj10_skiing
2016-11-29 18:09
309 查看
原题链接》》》
状态转移方程dp[i][j]=Max(dp[i][j],四周比自己小的dp值+1);
状态转移方程dp[i][j]=Max(dp[i][j],四周比自己小的dp值+1);
#include<stdio.h> #include<string.h> int num[101][101]; int dp[101][101]; int dr[4][2]={ {0,-1},{0,1},{-1,0},{1,0} }; int R,C; int Max(int a,int b){ return a>b?a:b; } int Inner(int x,int y){ if(x>=0&&x<R&&y>=0&&y<C) return 1; else return 0; } int dfs(int x,int y){ if(dp[x][y]>0) return dp[x][y]; else{ int x1,y1; for(int i=0;i<4;i++){ x1=x+dr[i][0]; y1=y+dr[i][1]; if(Inner(x1,y1)&&num[x][y]>num[x1][y1]){ dp[x][y]=Max(dfs(x1,y1)+1,dp[x][y]); } } return dp[x][y]; } } int main(){ int N; scanf("%d",&N); while(N--){ int i,j; memset(dp,0,sizeof(dp)); scanf("%d%d",&R,&C); for(i=0;i<R;i++) for(j=0;j<C;j++) scanf("%d",&num[i][j]); int max,m;max=0; for(i=0;i<R;i++){ for(j=0;j<C;j++){ m=dfs(i,j); if(m>max) max=m; } } printf("%d\n",max+1); } return 1; }
相关文章推荐
- nyoj 10 skiing 搜索+动归
- Nyoj 10 skiing Java实现
- [ACM_NYOJ_10]Skiing(深度优先搜索&动态规划)
- NYOJ 10 skiing
- nyoj 10——skiing————————【记忆化搜索】
- NYOJ 10 skiing
- nyoj_10 skiing
- nyoj 10 skiing
- NYOJ 10 skiing
- NYOJ 10 skiing
- skiing (NYOJ 10) [动态规划+搜索]
- nyoj 10 skiing
- NYOJ 10 skiing
- NYOJ-10-Skiing(dfs+记忆深搜)
- nyoj 10 skiing
- nyoj-10-skiing
- nyoj 10 skiing(DAG上的最长路,备忘录方法)
- NYOJ10,skiing
- NYOJ 题目10 skiing
- NYOJ 10 skiing 【搜索】