hdu 2571 命运(递推,请小心)
2014-06-25 21:07
204 查看
题目
//不能广搜,会超内存
//可以用dp思想模拟
//map 后来保存的是 保存由前面推来的最大的幸运总值的点
//下标从1开始,不然倍数会有问题
//AC 代码:
AC代码
为什么这样分开写错呢
//不能广搜,会超内存
//可以用dp思想模拟
//map 后来保存的是 保存由前面推来的最大的幸运总值的点
//下标从1开始,不然倍数会有问题
//AC 代码:
AC代码
//不能广搜,会超内存 //可以用dp思想模拟 //temp 保存由前面推来的最大的幸运总值的点 #include<stdio.h> #include<string.h> #include<algorithm> #include<queue> using namespace std; int main() { int t,n,m,i,j,k,map[25][1010]; int temp[25][1010]; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); //一切要从1开始!!否则倍数有问题!! for(i=1;i<=n;i++) { for(j=1;j<=m;j++) { scanf("%d",&map[i][j]); } } //没有初始化? memset(temp,-21000000,sizeof(temp)); temp[1][1]=map[1][1]; //(x,y+1) for(j=2;j<=m;j++) temp[1][j]=map[1][j]+temp[1][j-1]; //(x+1,y) for(i=2;i<=n;i++) temp[i][1]=map[i][1]+temp[i-1][1]; //(x,y*k) for(j=2;j<=m;j++) { for(k=2;k<=m;k++) { if(j%k==0) { temp[1][j]=temp[1][j]>(map[1][j]+temp[1][j/k])? temp[1][j]:(map[1][j]+temp[1][j/k]); } } } for(i=2;i<=n;i++) { for(j=2;j<=m;j++) { //(x,y+1) temp[i][j]=temp[i][j]>(map[i][j]+temp[i][j-1])? temp[i][j]:(map[i][j]+temp[i][j-1]); //(x,y*k) for(k=2;k<=m;k++) { if(j%k==0) { temp[i][j]=temp[i][j]>(map[i][j]+temp[i][j/k])? temp[i][j]:(map[i][j]+temp[i][j/k]); } } //(x+1,y) temp[i][j]=temp[i][j]>(map[i][j]+temp[i-1][j])? temp[i][j]:(map[i][j]+temp[i-1][j]); } } printf("%d\n",temp [m]); } return 0; }
为什么这样分开写错呢
相关文章推荐
- hdu 2571 命运 (递推)
- hdu 2571 命运
- hdu 2571 命运
- HDU ~ 2571 ~ 命运(DP)
- hdu 2571 命运 搜索好题 很多人用dp做
- Problem H:命运(HDU 2571)
- HDU 2571 命运 (动规)
- hdu 2571 命运 (动态规划)
- HDU 2571 命运 (DP)
- 命运 HDU - 2571
- HDU 2571-命运
- [HDU 2571] 命运
- HDU 2571 命运
- HDU - 2571 命运 —— 01背包
- HDU 2571 命运 (dp)
- HDU 2571 命运
- 【HDU】2571 - 命运(dp)
- 命运(HDU 2571 简单动态规划)
- 【DP|水】HDU-2571 命运
- HDU 2571 命运