acm_幸运大迷宫
来源:互联网 发布:怎么才能成为淘宝爆款 编辑:程序博客网 时间:2024/05/16 12:04
题目:
13 89 10 10 10 10 -10 10 1010 -11 -1 0 2 11 10 -20-11 -11 10 11 2 10 -10 -10
52
这题我一开始感觉会超时。。代码写的东西有点多。。我感觉我用的不是DP。。
我是把所有的方格的下一种情况都列出来,然后和下一种情况的格子当前的幸运数比较,大则替换,小就不做什么了,感觉有点像遍历。。挺麻烦的,做了好长时间
代码:
#include <iostream>
#include <cstring>
using namespace std;
int inline max(int a,int b)
{
return a>b?a:b;
}
//int inline max2(int a,int b,int c)
//{
// return max1(a,b)>c?max1(a,b):c;
//}
int main()
{
int i,m,n,C,c[21][1001],lucky[21][1001];
//freopen("r.txt","r",stdin);
cin>>C;
while(C!=0)
{
C=C-1;
cin>>m>>n;
for(i=1;i<=m;i++)
for(int j=1;j<=n;j++)
cin>>c[i][j];
memset(lucky,false,sizeof(lucky));
lucky[1][1]=c[1][1];
for(i=1;i<=m;i++)
for(int j=1;j<=n;j++)
{
for(int k=2;k<=1000;k++)
{
if(j*k<=n&&lucky[i][j*k]!=false) lucky[i][j*k]=max(lucky[i][k*j],lucky[i][j]+c[i][k*j]);
else if(j*k<=n&&lucky[i][k*j]==false) lucky[i][k*j]=lucky[i][j]+c[i][k*j];
else break;
}
if(i+1<=m&&lucky[i+1][j]!=false) lucky[i+1][j]=max(lucky[i+1][j],lucky[i][j]+c[i+1][j]);
if(i+1<=m&&lucky[i+1][j]==false) lucky[i+1][j]=lucky[i][j]+c[i+1][j];
if(j+1<=n&&lucky[i][j+1]!=false) lucky[i][j+1]=max(lucky[i][j+1],lucky[i][j]+c[i][j+1]);
if(j+1<=n&&lucky[i][j+1]==false) lucky[i][j+1]=lucky[i][j]+c[i][j+1];
}
cout<<lucky[m][n]<<endl;
}
return 0;
}
- acm_幸运大迷宫
- 人生三大幸运
- Android幸运大转盘
- jQuery幸运大转盘
- 幸运用户大抽奖
- flex 幸运大转盘 代码
- html5 制作幸运大转盘
- PHP 幸运大转盘 开发
- 《幸运大转盘》代码分享
- 幸运大转盘的demo
- 简版幸运大转盘
- Unity实现幸运大转盘
- vue js 幸运大转盘
- ACM_大数运算 模板&&讲解&&各大oj题目
- ACM_大牛总结的线段树专辑
- 幸运
- 幸运
- 幸运
- linux中c表示字符设备文件符号
- Unity学习日常问题记录三 -- Slider的使用
- opencv作业
- 嵌入式开发
- Adobe CC Family (CC 2015) 大师版
- acm_幸运大迷宫
- java分为 三类 ME,SE,EE
- NSPredicate
- 宏定义学习
- HBase GC的前生今世 - 身世篇
- 133.Intersection of Two Arrays
- 【44】java大数值剖析
- PS高级特训班 百度云资源(价值2180元)
- 1、操作系统基础概念