题意:给出n*m的矩阵 如果选择了其中一个格子就可以得到该格子上的权值
但是它左边和右边的格子就不能选 然后上下两行的格子也不能选择
其实是很简单的dp 无非是选择与不选择 对于每一行来说 选择了j-1的路径 或者 选择j-2的路径
而j-2的路径可以得到当前点的权值
然后对于每一列来说也是选择i-1的行或者是i-2的行的路径即可
但是只有n*m的数据范围
二维怎么也过不了 只能一维水果了
#include<iostream>
#include<stdio.h>
#include<cstdio>
using namespace std;
#define maxn 222222
int x[maxn],y[maxn];
int main(){
int n,m,ox;
while(~scanf("%d%d",&n,&m)){
for(int i=2;i<=n+1;++i){
for(int j=2;j<=m+1;++j){
scanf("%d",&ox);
x[j]=max(x[j-1],x[j-2]+ox);
}
y[i]=max(y[i-1],y[i-2]+x[m+1]);
}
printf("%d\n",y[n+1]);
}
return 0;
}