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. CF 1042A Benches——二分答案(水题)

    题目:http://codeforces.com/problemset/problem/1042/A #include<iostream> #include<cstdio> # ...

  2. python快速上手教程

    python版本 python目前的版本分为2.7和3.5,两种版本的代码目前无法兼容,查看python版本号: python --version 基本数据类型 数字类型 整型和浮点型数据和其它编程语 ...

  3. AI-Info-Micron-Insight:在线购物算法的核心是强大的 DRAM

    ylbtech-AI-Info-Micron-Insight:在线购物算法的核心是强大的 DRAM 1.返回顶部 1. 在线购物算法的核心是强大的 DRAM 网购已成为标准程序.你滚动浏览各种服装页面 ...

  4. 使用unlist将日期型数据的列表转换为向量时,出现的异常

    在使用unlist函数,将日期型的列表,转换为向量时,不会得到期望的结果,如下: > dateLst <- list(Sys.Date()) > dateLst [[1]] [1] ...

  5. 'ascii' codec can't decode byte 0xe6 in position 0: ordinal not in range(128)

    No valid host was found. There are not enough hosts available 'ascii' codec can't decode byte 0xe6 i ...

  6. SoapUI测试登录

    实际登录过程为: 1. 打开/login页面 2. 登录 3. 自动调整至/dashboard页面 SoapUI的设计上,每一次请求后,都会清理掉cookie,于是设计的测试登录过程如下: 1. po ...

  7. 隐藏时间表ribbon按钮

    Ribbon.ContextualTabs.Timesheet.Home.Share;Ribbon.ContextualTabs.Timesheet.Home.ShowHide;Ribbon.Cont ...

  8. WebService基础入门(转)

    一.概念: 1.WebService,顾名思义就是基于Web的服务.它使用Web(HTTP)方式,接收和响应外部系统的某种请求.从而实现远程调用. 2.我们可以调用互联网上查询天气信息Web服务,然后 ...

  9. CABasicAnimation动画及其keypath值和作用

    //tarnsform放大缩小动画 CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transf ...

  10. DIV文字水平垂直居中的方法

    水平居中 text-align:center 垂直居中(vertical-align) vertical-align:middle; vertical-align时而没效果 然而真实使用的时候,我们会 ...