方格取数

时间限制: 1 Sec  内存限制: 128 MB
提交: 9  解决: 4
[提交][状态][讨论版][命题人:quanxing]

题目描述

设有N×N的方格图,我们在其中的某些方格中填入正整数,而其它的方格中则放入数字0。如下图所示:

某人从图中的左上角A出发,可以向下行走,也可以向右行走,直到到达右下角的B点。在走过的路上,他可以取走方格中的数(取走后的方格中将变为数字0)。

此人从A点到B点共走了两次,试找出两条这样的路径,使得取得的数字和为最大。

输入

第一行为一个整数N(N≤10),表示N×N的方格图。

接下来的每行有三个整数,第一个为行号数,第二个为列号数,第三个为在该行、该列上所放的数。一行“0 0 0”表示结束。

输出

第一个整数,表示两条路径上取得的最大的和。

 

样例输入

8
2 3 13
2 6 6
3 5 7
4 4 14
5 2 21
5 6 4
6 3 15
7 2 14
0 0 0

样例输出

67

提示

 

来源

动态规划经典题

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <vector>
#include <queue>
#include<deque>
#define inf 0x3f3f3f3f
using namespace std;
int a[][];
int b[][];
int dp[][];
int main()
{
int n;
cin>>n;
int i,j;
memset(a,,sizeof(a));
memset(dp,,sizeof(dp));
int x,y,z;
while(cin>>x>>y>>z)
{
if(x==&&y==&&z==) break;
a[x][y]=z;
}
dp[][]=a[][];
for( i=;i<=n;i++)
{
dp[][i]=dp[][i-]+a[][i];
dp[i][]=dp[i-][]+a[i][];
}
for(i=;i<=n;i++)
{
for(j=;j<=n;j++)
{
dp[i][j]=a[i][j]+max(dp[i][j-],dp[i-][j]);
}
}
int s=dp[n][n];
i=n;j=n;
b[i][j]=;
for(int i=;i<=n;i++)
{
for(int j=;j<=n;j++)
b[i][j]=a[i][j];
}
while(i!=||j!=)//回退看看是怎么退过来的
{
if(j>=&&dp[i][j]==a[i][j]+dp[i][j-])
{
b[i][j-]=;//要用一个新的数组,否则会影响,跳不出循环
j--;
}
else if(i>=&&dp[i][j]==a[i][j]+dp[i-][j])
{
b[i-][j]=;
i--;
}
} //for(int i=1;i<=n;i++)
//{
// for(int j=1;j<=n;j++)
// cout<<a[i][j];
// cout<<endl;
//}
// cout<<s<<endl; memset(dp,,sizeof(dp));
dp[][]=b[][];
for(i=;i<=n;i++)
{
dp[][i]=dp[][i-]+b[][i];
dp[i][]=dp[i-][]+b[i][];
}
for(i=;i<=n;i++)
{
for(j=;j<=n;j++)
{
dp[i][j]=b[i][j]+max(dp[i][j-],dp[i-][j]);
}
}
cout<<s+dp[n][n]<<endl;
return ;
}

方格取数(dp)的更多相关文章

  1. NOIP2000方格取数[DP]

    题目描述 设有N*N的方格图(N<=9),我们将其中的某些方格中填入正整数,而其他的方格中则放 人数字0.如下图所示(见样例): A 0 0 0 0 0 0 0 0 0 0 13 0 0 6 0 ...

  2. luogu 1004 方格取数 dp

    题目链接 题意 设有N*N的方格图(N<=9),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字0.如下图所示: A 0 0 0 0 0 0 0 0 0 0 13 0 0 6 0 0 ...

  3. P1006 传纸条 (方格取数dp)

    题目描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个mm行nn列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了.幸运 ...

  4. neu1458 方格取数 dp解法

    题意: 有N * N个格子,每一个格子里有正数或者0,从最左上角往最右下角走,仅仅能向下和向右,一共走两次(即从左上角走到右下角走两趟),把全部经过的格子的数加起来,求最大值SUM,且两次假设经过同一 ...

  5. hiho 1617 - 方格取数 - dp

    题目链接 描述 给定一个NxN的方格矩阵,每个格子中都有一个整数Aij.小Hi和小Ho各自选择一条从左上角格子到右下角格子的路径,要求路径中每一步只能向右或向下移动,并且两条路径不能相交(除了左上右下 ...

  6. HDU 1565&1569 方格取数系列(状压DP或者最大流)

    方格取数(2) Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total S ...

  7. HDU 1565 - 方格取数(1) - [状压DP][网络流 - 最大点权独立集和最小点权覆盖集]

    题目链接:https://cn.vjudge.net/problem/HDU-1565 Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32 ...

  8. HDU 1565 方格取数(1) 轮廓线dp

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1565 方格取数(1) Time Limit: 10000/5000 MS (Java/Others) ...

  9. HDU1565 方格取数 &&uva 11270 轮廓线DP

    方格取数(1) Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  10. hdu 1565 方格取数(1) 状态压缩dp

    方格取数(1) Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

随机推荐

  1. Java_WebKit_ZC01

    1. 1.1. F:\ZC_chrome_download\java_svg\__Java_call_Qt\qtjambi-master\doc\src\snippets\application.xm ...

  2. srm开发(基于ssh)(4)

    1 input处理内容补充 -在struts2里面有错误处理机制,当上传文件超过默认的大小,自动返回结果input -在struts.xml中配置input的返回结果 <!-- 配置input结 ...

  3. HTTP Status 500 - javax.el.PropertyNotFoundException: Property 'lkmId' not found on type cn.itcast.entity.LinkMan

    报错 type Exception report message javax.el.PropertyNotFoundException: Property 'lkmId' not found on t ...

  4. HTML5 地理定位 【来自百度应用分享平台】

    百度给的地图API接口相当完善,复制过来一下,以后备用 基本使用方法: <!--引入百度地图API--> <scriptsrc="http://api.map.baidu. ...

  5. python 正则表达式使用

    正则表达式总结: python支持的字符和语法:. 匹配任意除换行符\n 之外的所有字符\ 转义字符 比如说要匹配的字符中含有 \ . * 等可以使用\转义 例如 \* \. \\[.....] 直接 ...

  6. 五十 Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现我的搜索以及热门搜索

    第三百七十一节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现我的搜索以及热门 我的搜素简单实现原理我们可以用js来实现,首先用js获取到 ...

  7. linux rpm命令安装卸载 初步使用

    安装(以安装jdk为例) 1.下载后,首先把jdk-7u3-linux-x64.rpm复制到/usr/local/src#cp jdk-7u3-linux-x64.rpm /usr/local/src ...

  8. day5-shutil模块

    一.概述 我们通过python操作文件时,除正常读写操作外,有时还需要进行拷贝.删除.打包等操作,虽然os模块提供了部分功能,但还是不够完善,这里要讲讲专业的高级的文件,文件夹,压缩包处理模块shut ...

  9. 模拟form提交数据

    最近在做一个项目,发现ajax不能enctype=”multipart/form-data” 属性的表单,没办法,只能使用form表单直接提交的方法了,但是form表单直接提交会跳转页面,这样很不友好 ...

  10. 理解java异常处理机制

    1. 引子 try…catch…finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解.不过,我亲自体验的“教训”告诉我,这个东西可不是想象中的那么简单.听话. ...