滑雪题...之前欠下的债...
题目链接:滑雪 - POJ 1088 - Virtual Judge (vjudge.net)
整体思路:直接把没个点的最长滑雪路径存下来,找最长滑雪路径的时候用到了动态规划的思想
#include<iostream>
#include<stdio.h>
#include<cstring>
#include<cmath>
#include<map>
#include<queue>
#include<algorithm>
typedef long long ll;
using namespace std;
int next1[5][3]={{0,1},{-1,0},{1,0},{0,-1}};
int n,m;
int a[105][105];
int chang[105][105];
int dfs(int x,int y){
if(chang[x][y]!=0) return chang[x][y];
chang[x][y]=1;
for(int i=0; i<4;i++){
int tx=x+next1[i][0];
int ty=y+next1[i][1];
if(tx<1||ty<1||tx>n||ty>n||a[tx][ty]>=a[x][y]) continue;
chang[x][y] = max(dfs(tx, ty)+1,chang[x][y]);
}
return chang[x][y];
}
int main(){
int max1=0;
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin >>a[i][j];
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
max1=max(max1,dfs(i,j));
}
}
cout<<max1;
}