1043 方格取数 2000年NOIP全国联赛提高组
1043 方格取数
2000年NOIP全国联赛提高组
设有N*N的方格图(N<=10,我们将其中的某些方格中填入正整数,而其他的方格中则放入数字0。如下图所示(见样例):
某人从图的左上角的A 点出发,可以向下行走,也可以向右走,直到到达右下角的B点。在走过的路上,他可以取走方格中的数(取走后的方格中将变为数字0)。
此人从A点到B 点共走两次,试找出2条这样的路径,使得取得的数之和为最大。

输入的第一行为一个整数N(表示N*N的方格图),接下来的每行有三个整数,前两个表示位置,第三个数为该位置上所放的数。一行单独的0表示输入结束。
只需输出一个整数,表示2条路径上取得的最大的和。
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
分类标签 Tags 点此展开‘
注意ed的定义
AC:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int MAXN=;
int map[MAXN][MAXN];
int vis[MAXN][MAXN];
int pass[MAXN][MAXN];
int ans1=;
int n;
int ed;
void dfs(int i,int j,int tot,int now)
{
int t=map[i][j];
map[i][j]=;
if(i==n&&j==n)
{
if(now==)
{
dfs(,,tot+ed,);
}
else
{
if(tot>ans1)
ans1=tot;
return ;
}
}
vis[i][j]=;
if(vis[i+][j]==&&i+<=n&&j<=n&&i>&&j>)
{
dfs(i+,j,tot+t,now);
}
if(vis[i][j+]==&&i<=n&&j+<=n&&i>&&j+>)
{
dfs(i,j+,tot+t,now);
}
vis[i][j]=;
map[i][j]=t;
}
int main()
{ scanf("%d",&n);
int x,y,z;
while(scanf("%d%d%d",&x,&y,&z))
{
if(x==&&y==&&z==)
break;
else
map[x][y]=z;
}
ed=map[n][n];
dfs(,,,);
printf("%d",ans1);
//dfs2(1,1,0);
return ;
}
未AC:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int MAXN=;
int map[MAXN][MAXN];
int vis[MAXN][MAXN];
int pass[MAXN][MAXN];
int ans1=;
int ans2=;
int n;
int now=;
void dfs(int i,int j,int tot)
{
if(i==n&&j==n)
{
if(tot>ans1)
{
memset(pass,,sizeof(pass));
ans1=tot;
for(int i=;i<=n;i++)
{
for(int j=;j<=n;j++)
{
if(vis[i][j]==)
pass[i][j]=;
}
}
}
return ;
}
if(vis[i+][j]==&&i+<=n&&j<=n&&i>&&j>)
{
vis[i+][j]=;
dfs(i+,j,tot+map[i+][j]);
vis[i+][j]=;
}
if(vis[i][j+]==&&i<=n&&j+<=n&&i>&&j+>)
{
vis[i][j+]=;
dfs(i,j+,tot+map[i][j+]);
vis[i][j+]=;
}
}
int main()
{ scanf("%d",&n);
int x,y,z;
while(scanf("%d%d%d",&x,&y,&z))
{
if(x==&&y==&&z==)
break;
else
map[x][y]=z;
}
dfs(,,map[][]);
int tot=ans1;
ans1=;
//printf("%d\n",tot);
for(int i=;i<=n;i++)
{
for(int j=;j<=n;j++)
{
if(pass[i][j]==)
map[i][j]=;
}
}
dfs(,,);
tot=tot+ans1;
printf("%d",tot);
//dfs2(1,1,0);
return ;
}
1043 方格取数 2000年NOIP全国联赛提高组的更多相关文章
- codevs 1043 方格取数 2000年NOIP全国联赛提高组
时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 设有N*N的方格图(N<=10,我们将其中的某些方格中填入正整数,而 ...
- 1043 方格取数 2000 noip 提高组
1043 方格取数 2000 noip 提高组 题目描述 Description 设有N*N的方格图(N<=10,我们将其中的某些方格中填入正整数,而其他的方格中则放入数字0.如下图所示(见样 ...
- 矩阵取数游戏 2007年NOIP全国联赛提高组(dp+高精)
矩阵取数游戏 2007年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description [问题描述]帅帅经常跟 ...
- Codevs 1017 乘积最大 2000年NOIP全国联赛普及组NOIP全国联赛提高组
1017 乘积最大 2000年NOIP全国联赛普及组NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 今年是国 ...
- 1009 产生数 2002年NOIP全国联赛普及组
1009 产生数 2002年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 给出一个整数 n(n< ...
- 1008 选数 2002年NOIP全国联赛普及组
1008 选数 2002年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description ...
- 1017 乘积最大 2000年NOIP全国联赛普及组NOIP全国联赛提高组
1017 乘积最大 2000年NOIP全国联赛普及组NOIP全国联赛提高组 #include <iostream> #include <string> #include & ...
- Codevs 1064 虫食算 2004年NOIP全国联赛提高组
1064 虫食算 2004年NOIP全国联赛提高组 时间限制: 2 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 所谓虫食算,就是原先的算式 ...
- Codevs 1198 国王游戏 2012年NOIP全国联赛提高组
1198 国王游戏 2012年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 恰逢 H 国国庆,国王邀 ...
随机推荐
- RT-Thread OS的启动流程
1.RT进入main之前, SystemInit函数初始化时钟. 2.main函数位于startup.c文件中.进行两个工作 系统开始前,rt_hw_interrupt_disable关闭所有中断. ...
- win 10 无线标志都不出现
http://jingyan.baidu.com/article/e75057f2fdd2f1ebc91a89f1.html ipconfig /flushdns netsh winsock rese ...
- CodeFlex AutoUpdate
http://autoupdaterdotnet.codeplex.com/downloads/get/888100
- Promise API
Promise API 刚刚接触promise这个东西,网上看了很多博客,大部分是讲怎么用Promise,丝毫没提怎么实现Promise. 我不甘 心,可是真去看JQuery或者Angular ...
- Linux打开防火墙telnet端口
检查端口情况:netstat -an | grep 22 关闭端口号:iptables -A INPUT -p tcp --drop 端口号-j DROP ipt ...
- JSP+JavaBean+Servlet工作原理实例…
JSP+JavaBean+Servlet工作原理实例讲解 首先,JavaBean和Servlet虽都是Java程序,但是是完全不同的两个概念.引用mz3226960提出的MVC的概念,即M-model ...
- ASP.NET web application中的redirect
在开发ASP.NET MVC web application过程中,开发上线了新系统后,需要把老系统的url redirect新系统下 其中在项目系统目录下有一个文件 301RedirectsPage ...
- A Beginner's Guide to HTTP and REST
http://code.tutsplus.com/tutorials/a-beginners-guide-to-http-and-rest--net-16340 Hypertext Transfer ...
- 性能压测,SQL查询异常
早上测试对性能压测,发现取sequence服务大量超时报错,查询线上的监控SQL: 大量这个查询,我在DeviceID和Isdelete上建有复合索引,应该很快,而且我测试了一下,取值,执行效率很高, ...
- .net过滤器重写beginrequest
在J2EE Web开发中有过滤器filter,该filter可以对指定的URL访问进行拦截,并执行过滤器的方法,根据实际应用情况,在过滤器中修改请求的代码.判断会话信息,也可以做权限控制,总之这个过滤 ...