本人刚接触acm,是在保研笔试的严重失利下,决心要好好研究一下acm。下面便是我的一些体会。
题目不再描述。
首先用dp数组dp[i][j]表示i,j坐标的最长滑坡,用matrix二维数组表示各点高度
递归表达式:dp[i][j]={max{dp[i-1][j],dp[i+1][j],dp[i][j-1]dp[i][j+1]}+1 ,i-1>=0,i+1<row,j-1>=0,j+1<col},其实这个式子不太标准,例如只有matrix[i][j]>dp[i-1][j]时,dp[i-1][j]才有资格参与比较,其它位置类似。
我当时比较困惑的是最初的dp值怎么求得,然后就单步调试最后明白了,矩阵中肯定存在某些点,这些点比四周的点都小,所以直接就可求出这些点的dp值为1,然后以这些点为基础就可求出其它点的dp值
下面是我在网上找的我觉得比较容易理解的代码,稍加了改动,为了便于调试,直接赋予的数组值:
#include<stdio.h>
#incl