1043 方格取数

2000年NOIP全国联赛提高组

时间限制: 1 s
空间限制: 128000 KB
题目等级 : 钻石 Diamond
 
 
 
 
题目描述 Description

设有N*N的方格图(N<=10,我们将其中的某些方格中填入正整数,而其他的方格中则放入数字0。如下图所示(见样例):

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

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

输入描述 Input Description

输入的第一行为一个整数N(表示N*N的方格图),接下来的每行有三个整数,前两个表示位置,第三个数为该位置上所放的数。一行单独的0表示输入结束。

输出描述 Output Description

只需输出一个整数,表示2条路径上取得的最大的和。

样例输入 Sample Input

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

样例输出 Sample Output

67

数据范围及提示 Data Size & Hint
如描述

分类标签 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全国联赛提高组的更多相关文章

  1. codevs 1043 方格取数 2000年NOIP全国联赛提高组

    时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题目描述 Description 设有N*N的方格图(N<=10,我们将其中的某些方格中填入正整数,而 ...

  2. 1043 方格取数 2000 noip 提高组

    1043 方格取数  2000 noip 提高组 题目描述 Description 设有N*N的方格图(N<=10,我们将其中的某些方格中填入正整数,而其他的方格中则放入数字0.如下图所示(见样 ...

  3. 矩阵取数游戏 2007年NOIP全国联赛提高组(dp+高精)

    矩阵取数游戏 2007年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold     题目描述 Description [问题描述]帅帅经常跟 ...

  4. Codevs 1017 乘积最大 2000年NOIP全国联赛普及组NOIP全国联赛提高组

    1017 乘积最大 2000年NOIP全国联赛普及组NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 今年是国 ...

  5. 1009 产生数 2002年NOIP全国联赛普及组

    1009 产生数 2002年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold   题目描述 Description 给出一个整数 n(n< ...

  6. 1008 选数 2002年NOIP全国联赛普及组

    1008 选数 2002年NOIP全国联赛普及组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Description ...

  7. 1017 乘积最大 2000年NOIP全国联赛普及组NOIP全国联赛提高组

    1017 乘积最大 2000年NOIP全国联赛普及组NOIP全国联赛提高组   #include <iostream> #include <string> #include & ...

  8. Codevs 1064 虫食算 2004年NOIP全国联赛提高组

    1064 虫食算 2004年NOIP全国联赛提高组 时间限制: 2 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 所谓虫食算,就是原先的算式 ...

  9. Codevs 1198 国王游戏 2012年NOIP全国联赛提高组

    1198 国王游戏 2012年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 恰逢 H 国国庆,国王邀 ...

随机推荐

  1. RT-Thread OS的启动流程

    1.RT进入main之前, SystemInit函数初始化时钟. 2.main函数位于startup.c文件中.进行两个工作 系统开始前,rt_hw_interrupt_disable关闭所有中断. ...

  2. win 10 无线标志都不出现

    http://jingyan.baidu.com/article/e75057f2fdd2f1ebc91a89f1.html ipconfig /flushdns netsh winsock rese ...

  3. CodeFlex AutoUpdate

    http://autoupdaterdotnet.codeplex.com/downloads/get/888100

  4. Promise API

    Promise API     刚刚接触promise这个东西,网上看了很多博客,大部分是讲怎么用Promise,丝毫没提怎么实现Promise. 我不甘 心,可是真去看JQuery或者Angular ...

  5. Linux打开防火墙telnet端口

    检查端口情况:netstat -an | grep 22 关闭端口号:iptables -A INPUT -p tcp --drop 端口号-j DROP                    ipt ...

  6. JSP+JavaBean+Servlet工作原理实例…

    JSP+JavaBean+Servlet工作原理实例讲解 首先,JavaBean和Servlet虽都是Java程序,但是是完全不同的两个概念.引用mz3226960提出的MVC的概念,即M-model ...

  7. ASP.NET web application中的redirect

    在开发ASP.NET MVC web application过程中,开发上线了新系统后,需要把老系统的url redirect新系统下 其中在项目系统目录下有一个文件 301RedirectsPage ...

  8. A Beginner's Guide to HTTP and REST

    http://code.tutsplus.com/tutorials/a-beginners-guide-to-http-and-rest--net-16340 Hypertext Transfer ...

  9. 性能压测,SQL查询异常

    早上测试对性能压测,发现取sequence服务大量超时报错,查询线上的监控SQL: 大量这个查询,我在DeviceID和Isdelete上建有复合索引,应该很快,而且我测试了一下,取值,执行效率很高, ...

  10. .net过滤器重写beginrequest

    在J2EE Web开发中有过滤器filter,该filter可以对指定的URL访问进行拦截,并执行过滤器的方法,根据实际应用情况,在过滤器中修改请求的代码.判断会话信息,也可以做权限控制,总之这个过滤 ...