POJ 1088解题报告
本来十分简单的一道题,可却花了我那么长时间。测试了各种数据都是对的,一提交就WA,郁闷死了!!!
后来才发现是search()函数中的temp[4]没有初始化。。。
改成 int temp[4]={0}后就AC了。。。。
244K | 16MS | C++ | 907B |
解题思路:(DP)动态规划备忘录法递归求解。
dp[i][j]=1+max{dp[i+1][j],dp[i-1][j],dp[i][j+1],dp[i][j-1]};
避免重复,将计算过的dp[i][j]保存下来,下次直接查询而不再求解。
以下是源代码:
#include<stdio.h>
int dp[101][101]={0};
int r[101][101]={0};
int main()
{
int search(int i,int j,int m,int n);
int m,n,i,j;
while(scanf("%d %d",&m,&n)!=EOF)
{
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
r[i][j]=0;//记得初始化
scanf("%d",&dp[i][j]);
}
int max=0,temp;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
temp=search(i,j,m,n);//求以每个节点为起点的最长长度,然后求出整体最长长度
if(temp>max)
max=temp;
}
printf("%d\n",max);
}
return 1;
}
int search(int i,int j,int m,int n)//求以某个节点为起点的最长长度
{
if(r[i][j])//若该值存在,则直接返回,不再递归,避免重复
return r[i][j];
int temp[4]={0};//这儿一定要初始化,否则就WA了
int max=0;
if(i+1<m&&dp[i+1][j]<dp[i][j])
temp[0]=search(i+1,j,m,n);
if(i-1>=0&&dp[i-1][j]<dp[i][j])
temp[1]=search(i-1,j,m,n);
if(j+1<n&&dp[i][j+1]<dp[i][j])
temp[2]=search(i,j+1,m,n);
if(j-1>=0&&dp[i][j-1]<dp[i][j])
temp[3]=search(i,j-1,m,n);
for(int k=0;k<4;k++)
if(temp[k]>max)//若temp不初始化为0,则这儿出错
max=temp[k];
r[i][j]=max+1;
return r[i][j];
}
转载于:https://www.cnblogs.com/ltfbk/archive/2012/07/06/DP.html
POJ 1088解题报告相关推荐
- POJ 1003 解题报告
1.问题描述: http://poj.org/problem?id=1003 2.解题思路: 最直观的的想法是看能不能够直接求出一个通项式,然后直接算就好了, 但是这样好水的样子,而且也不知道这个通项 ...
- POJ 2159 解题报告
一.substitution cipher (置换密码): Substitution cipher changes all occurrences of each letter to some oth ...
- POJ 3250 解题报告 Bad Hair Day (单调栈)
传送门:http://poj.org/problem?id=3250 这题--水题啊,单调栈可解. 上一波C艹实现 #include <iostream> #include <cst ...
- poj 2262 解题报告
这道题是给一个偶数,然后找出两个素数的a.b和等于这个偶数,如果有多对的话就输出一个a-b最大的组结果.这道题很简单以前AC过,今天我改了一些判断一个数是否是素数的那个方法,但是没想到时间还是和以前的 ...
- POJ 1679 解题报告
这道题是判断最小生成树是否唯一. 方法之一(也是显而易见正确的方法)是求次小生成树,然后看两者的值是否一样.一样则不唯一.ByVoid有对次小生成树(及次短路径)的讲解(https://www.byv ...
- POJ 1185 解题报告 炮兵阵地
题目是中文的,我就不描述题意了. 题目用到的主要算法是状态压缩dp. 思路是,我们要知道n行最多的炮数,只要知道n-2行所有状态最多的炮数,就可以根据n-1行和n行最多可行的状态算出.也就是说,n-2 ...
- POJ 2593解题报告
题目来源 :PKU 2593 http://acm.pku.edu.cn/JudgeOnline/problem?id=2593 解法类型 :动态规划应用 作 者 :刘亚宁 题目大意: 抽取一个 ...
- POJ 1017解题报告
这题看起来简单,实际上要考虑的地方不少,一不小心就可能漏掉某条件导致WA,我一次测了1000组输入输出才发现自己原来的代码里面有40组输出是错误的,然后一步步调试,终于AC了.一直WA又找不到自己错在 ...
- POJ 2800 垂直直方图 解题报告
POJ 2800 垂直直方图 解题报告 编号:2800 考查点:简单计算题 思路: 用gets()读入4行数据,然后按字符统计,显示的时候有点小处理即可. 提交情况: 感觉POJ的测试数据有点骗人 ...
- POJ 2745 显示器 解题报告
POJ 2745 显示器 解题报告 编号:2745 考查点:模拟 思路:抽象出来,计算器显示是7个笔画,然后建立数组表示各笔画被覆盖情况,不过这个是我看了书之后实现的,方法果真经典. 提交情况:比 ...
最新文章
- 前置体验,才是打动用户的神器
- mustache模板技术
- 服务器搬迁之后的准备工作和应对
- Django基础(四)
- SQL Server数据库损坏、检测以及简单的修复办法
- python三种数据类型详解_最全面的Python数据类型知识点讲解
- C++易被忽略的知识点:移动语义 左值右值
- python爬虫面试遇到的问题
- 量子计算机怎么算有用,如何在量子计算机上实现经典计算
- 网络存储SAN网络存储术语解释
- 索尼相机手机控制对焦,操控指南丨 使用索尼微单的十个小技巧
- 拉普拉斯变换和Z变换表
- html设计打地鼠游戏,js实现打地鼠小游戏
- 猿创征文|我的技术成长之路C++
- pr使用中C盘空间变小
- 怎样设置excel中自动调整行高、列宽?
- VMWARE安装苹果虚拟机,能联网能加AppleID
- BZOJ 1101([POI2007]Zap-满足x=ay=bgcd(x,y)=d的数对个数)
- yum安装Jenkins报错Error in PREIN scriptlet in rpm package jenkins-2.204.5-1.1.noarch
- 后天淘宝客系统二次开发版【需后天授权码】此源码是二开后的