本来十分简单的一道题,可却花了我那么长时间。测试了各种数据都是对的,一提交就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解题报告相关推荐

  1. POJ 1003 解题报告

    1.问题描述: http://poj.org/problem?id=1003 2.解题思路: 最直观的的想法是看能不能够直接求出一个通项式,然后直接算就好了, 但是这样好水的样子,而且也不知道这个通项 ...

  2. POJ 2159 解题报告

    一.substitution cipher (置换密码): Substitution cipher changes all occurrences of each letter to some oth ...

  3. POJ 3250 解题报告 Bad Hair Day (单调栈)

    传送门:http://poj.org/problem?id=3250 这题--水题啊,单调栈可解. 上一波C艹实现 #include <iostream> #include <cst ...

  4. poj 2262 解题报告

    这道题是给一个偶数,然后找出两个素数的a.b和等于这个偶数,如果有多对的话就输出一个a-b最大的组结果.这道题很简单以前AC过,今天我改了一些判断一个数是否是素数的那个方法,但是没想到时间还是和以前的 ...

  5. POJ 1679 解题报告

    这道题是判断最小生成树是否唯一. 方法之一(也是显而易见正确的方法)是求次小生成树,然后看两者的值是否一样.一样则不唯一.ByVoid有对次小生成树(及次短路径)的讲解(https://www.byv ...

  6. POJ 1185 解题报告 炮兵阵地

    题目是中文的,我就不描述题意了. 题目用到的主要算法是状态压缩dp. 思路是,我们要知道n行最多的炮数,只要知道n-2行所有状态最多的炮数,就可以根据n-1行和n行最多可行的状态算出.也就是说,n-2 ...

  7. POJ 2593解题报告

    题目来源 :PKU 2593 http://acm.pku.edu.cn/JudgeOnline/problem?id=2593 解法类型 :动态规划应用 作    者 :刘亚宁 题目大意: 抽取一个 ...

  8. POJ 1017解题报告

    这题看起来简单,实际上要考虑的地方不少,一不小心就可能漏掉某条件导致WA,我一次测了1000组输入输出才发现自己原来的代码里面有40组输出是错误的,然后一步步调试,终于AC了.一直WA又找不到自己错在 ...

  9. POJ 2800 垂直直方图 解题报告

    POJ 2800 垂直直方图 解题报告 编号:2800   考查点:简单计算题 思路: 用gets()读入4行数据,然后按字符统计,显示的时候有点小处理即可. 提交情况: 感觉POJ的测试数据有点骗人 ...

  10. POJ 2745 显示器 解题报告

    POJ 2745 显示器 解题报告 编号:2745   考查点:模拟 思路:抽象出来,计算器显示是7个笔画,然后建立数组表示各笔画被覆盖情况,不过这个是我看了书之后实现的,方法果真经典. 提交情况:比 ...

最新文章

  1. 前置体验,才是打动用户的神器
  2. mustache模板技术
  3. 服务器搬迁之后的准备工作和应对
  4. Django基础(四)
  5. SQL Server数据库损坏、检测以及简单的修复办法
  6. python三种数据类型详解_最全面的Python数据类型知识点讲解
  7. C++易被忽略的知识点:移动语义 左值右值
  8. python爬虫面试遇到的问题
  9. 量子计算机怎么算有用,如何在量子计算机上实现经典计算
  10. 网络存储SAN网络存储术语解释
  11. 索尼相机手机控制对焦,操控指南丨 使用索尼微单的十个小技巧
  12. 拉普拉斯变换和Z变换表
  13. html设计打地鼠游戏,js实现打地鼠小游戏
  14. 猿创征文|我的技术成长之路C++
  15. pr使用中C盘空间变小
  16. 怎样设置excel中自动调整行高、列宽?
  17. VMWARE安装苹果虚拟机,能联网能加AppleID
  18. BZOJ 1101([POI2007]Zap-满足x=ay=bgcd(x,y)=d的数对个数)
  19. yum安装Jenkins报错Error in PREIN scriptlet in rpm package jenkins-2.204.5-1.1.noarch
  20. 后天淘宝客系统二次开发版【需后天授权码】此源码是二开后的

热门文章

  1. 线程(一)__同步以及死锁
  2. Docker版本Omnibus Gitlab 加Lets Encrypt免费SSL一键搭建
  3. SpringMVC深度探险(四) —— SpringMVC核心配置文件详解
  4. Java日常干货-观察者模式
  5. 基于kafka的定时消息/任务服务
  6. 性能测试的原则和方法
  7. 11月22日学习内容整理:bootstrap居中处理和组件,常用组件
  8. ylbtech-Unitity-CS:AnonymousDelegates
  9. Eclipse或者Myeclipse卡,慢的解决方法
  10. leetcode Candy