[记忆化搜索DP]UVa10285 - Longest Run on a Snowboard
2015-09-24 00:53
639 查看
#include<bits/stdc++.h> using namespace std; int n,R,C,Max,a[105][105],f[105][105]; char name[100]; int dp(int i,int j){ if(f[i][j]!=0) return f[i][j]; if(i<=R&&i>=1&&j<=C&&j>=1) { int k,p,q; if(a[i][j]>a[i-1][j]) f[i][j]=dp(i-1,j)+1; if(a[i][j]>a[i+1][j]&&f[i][j]<(k=dp(i+1,j)+1)) f[i][j]=k; if(a[i][j]>a[i][j-1]&&f[i][j]<(p=dp(i,j-1)+1)) f[i][j]=p; if(a[i][j]>a[i][j+1]&&f[i][j]<(q=dp(i,j+1)+1)) f[i][j]=q; if(f[i][j]==0) f[i][j]=1; } return f[i][j]; } int main() { while(scanf("%d",&n)==1) while(n--){ scanf("%s%d%d",name,&R,&C); memset(a,0,sizeof(a)); memset(f,0,sizeof(f)); for(int i=1;i<=R;i++) for(int j=1;j<=C;j++) scanf("%d",&a[i][j]); Max=0; for(int i=1;i<+R;i++) for(int j=1;j<=C;j++) { int z=dp(i,j); if(z>Max) Max=z; } printf("%s: %d\n",name,Max); } return 0; }
相关文章推荐
- Windows下搭建appium(Android版)
- 如何离线增量升级Android Studio
- 百度笔试题目解析
- 四 NoteList.java
- Binary Tree Postorder Traversal
- 初学Python-第五章练习题
- AutowireCapableBeanFactory,实现不必配置xml文件,动态加载bean
- 93 c 访问结构体成员
- iOS图片浏览器控件 放大,缩小,UIScrollView
- java面试题十一 基本数据类型
- Java反射
- hive 报错 java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient
- Xcode, does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE) 解决办法
- CSS样式之选择器
- Java数据结构与算法
- 2、SecureCRT中文乱码问题
- Android_handler源码分析,及介绍
- LeetCode---Excel Sheet Column Number
- Http相关介绍
- java面试题十 string字符串操作