题意:
中文题,就是在所有的点中找一个点作为起点,然后叫你找出从起点开始的最长路径是多少。
这里高度必须严格递减。
思路:
一开始我碰到这题时,没有思路,是看题解写的。
但是今天我回头再去看时,发现自己能够独立写出来了,而且和上次的方法不一样。也许这就是进步吧!
其实就是一个递推型动归,如果理解了上一题,那么这题也好做了。
这是第一次写的:
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;
#define maxn 111
#define maxh 11111
int a[maxn][maxn],dp[maxn][maxn];
int getmax(int up,int down,int left,int right){
if(up>=down&&up>=left&&up>=right) return up;
if(down>=up&&down>=left&&down>=right) return down;
if(left>=up&&left>=down&&left>=right) return left;
if(right>=up&&right>=down&&right>=left) return right;
return -1;
}
int DP(int x,int y){
int up=