DP::Poj1088 滑雪
来源:互联网 发布:2017中国云计算500强 编辑:程序博客网 时间:2024/05/21 18:38
这题不难,状态转移方程很快就写出来 m[i, j]=max{m[i-1, j](下)+1,m[i, j-1](左)+1,m[i+1, j](上)+1,m[i, j+1](右)+1}(若下左上右对应元素比s[i, j]小,则对应的m[ ]就可以出现在方程中)
具体实现的话也很简单,处理max{ }用冒泡法,注意边界就行。在cout的时候,没有“+1 ”,试了几组数据,才知道那个错误。之所以要加上1,是因为最后那个m[ ]没有把最大元素算进去!
#include <iostream>using namespace std;int s[101][101];int m[101][101]={0};int findmax(int R,int C,int i,int j){int temp=0;if(m[i][j]>0) return m[i][j];if(i-1>0 && s[i][j]>s[i-1][j]){temp=findmax(R,C,i-1,j)+1;if(temp>m[i][j])m[i][j]=temp;}if(j-1>0 && s[i][j]>s[i][j-1]){temp=findmax(R,C,i,j-1)+1;if(temp>m[i][j])m[i][j]=temp;}if(i+1<=R && s[i][j]>s[i+1][j]){temp=findmax(R,C,i+1,j)+1;if(temp>m[i][j])m[i][j]=temp;}if(j+1<=C && s[i][j]>s[i][j+1]){temp=findmax(R,C,i,j+1)+1;if(temp>m[i][j])m[i][j]=temp;}return m[i][j];}int findmaxm(int R,int C){int max=0;for(int i=1;i<=R;i++)for(int j=1;j<=C;j++){m[i][j]=findmax(R,C,i,j);if(m[i][j]>max)max=m[i][j];}return max;}int main(){int R,C;cin >> R >> C;for(int i=1;i<=R;i++)for(int j=1;j<=C;j++)cin>>s[i][j];cout<<findmaxm(R,C)+1<<endl;return 0;}
- 滑雪DP;POJ1088;
- DP::Poj1088 滑雪
- poj1088 滑雪 DP+DFS
- POJ1088 滑雪 dp
- poj1088--滑雪(经典dp)
- poj1088-滑雪(简单DP)
- POJ1088 滑雪 简单DP
- POJ1088 滑雪 dp
- poj1088滑雪(简单DP)
- POJ1088 滑雪(DP)
- POJ1088滑雪(dp)
- DP问题(POJ1088滑雪)
- POJ1088-滑雪 记忆化DP
- poj1088 滑雪(简单dp)
- POJ1088--滑雪(DP+搜索)
- 滑雪(poj1088,DP+记忆化搜索)
- poj1088 滑雪(dfs、dp优化)
- POJ1088 滑雪 DP+记忆化搜索
- iPad加载webView内容
- redhat5 raw 的管理
- hibernate 主键指定不当造成的错误
- 浅析http协议
- 经典:从追MM谈Java的23种设计模式
- DP::Poj1088 滑雪
- curl源码分析(一)webkit中curl库的使用
- Playing a sound with AVAudioPlayer播放本地文件
- 内联排列的间距 和 浏览器对换行符理解成文本节点的原因研究
- SSI(Server Side Includeds)使用详解
- Struts2 无法导向到首页There is no Action mapped for namespace / and action name
- 写在最前面的...
- 排序算法
- C/C++源代码网