真的不知道哪里错了,90分!

P1508 Likecloud-吃、吃、吃

不要使用memset初始化二维数组
by xiangling @ 2018-07-20 07:34:09


您可以参考下我的记忆化搜索程序 ``` #include<bits/stdc++.h> #define MAXN 205 #define INF 1199999999 using namespace std; int m,n; int f[MAXN][MAXN],w[MAXN][MAXN]; int dp(int x,int y) { if(f[x][y]!=(-INF))return f[x][y]; if(x==1) return w[x][y]; if(y<1||y>n)return (-INF); f[x][y]=max(max(dp(x-1,y),dp(x-1,y-1)),dp(x-1,y+1))+w[x][y]; return f[x][y]; } int main() { for(int i=0;i<MAXN;i++) for(int j=0;j<MAXN;j++) f[i][j]=-INF; cin>>m>>n; for(int i=1;i<=m;i++) for(int j=1;j<=n;j++) scanf("%d",&w[i][j]); cout<<dp(m+1,n/2+1); return 0; } ```
by xiangling @ 2018-07-20 07:36:35


@[Preccc_LHW](/space/show?uid=24374) 别赋-1,有些吃出来是负数你用-1不够的,建议memset(f,129,sizeof(f));再来一个全局变量p记录原值,比如p=f[0][0],然后上面!=-1改成!=p就ok了,这和memset初始化多维数组无关
by hahaha_s @ 2018-07-20 07:49:43


@[Preccc_LHW](/space/show?uid=24374) 吃出来是负数也得吃,吃货的精神啊~~
by hahaha_s @ 2018-07-20 07:50:37


@[rainman](/space/show?uid=55804) @[hahaha_s](/space/show?uid=36479) 感谢大佬帮助!! 把初值赋为-1确实有错, 但因数据水不影响结果, 90分的原因是 ```c if (ty > m || ty <= 0)continue; ``` 中的n,应该是m~~(哭着找了好久)~~ 15分钟写的代码花了半个小时找错,你说我是不是睿(ruo)智啊
by Preccc_LHW @ 2018-07-21 00:59:47


@[Preccc_LHW](/space/show?uid=24374) 然而你打的不就是m吗。。
by hahaha_s @ 2018-07-21 07:19:08


@[Preccc_LHW](/space/show?uid=24374) 数据水这句话成功打肿了我的脸。。
by hahaha_s @ 2018-07-21 07:27:10


@[hahaha_s](/space/show?uid=36479) 不,应该是n,不是m, 回复写反了,不要在意这些细节。。
by Preccc_LHW @ 2018-07-22 00:04:01


@[Preccc_LHW](/space/show?uid=24374) 噗嗤额
by hahaha_s @ 2018-07-22 17:23:38


|