1625 数字金字塔

USACO

 时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 黄金 Gold
 
题目描述 Description

考虑在下面被显示的数字金字塔.

写一个程序来计算从最高点开始在底部任意处结束的路径经过数字的和的最大.

每一步可以走到下方的点也可以到达右下方的点.

7

3 8

8 1 0

2 7 4 4

4 5 2 6 5

在上面的样例中,从 7 到 3 到 8 到 7 到 5 的路径产生了最大和:30

输入描述 Input Description

第一个行包含 R(1<= R<=1000) ,表示行的数目.

后面每行为这个数字金字塔特定行包含的整数.

所有的被供应的整数是非负的且不大于 100

输出描述 Output Description

单独的一行包含那个可能得到的最大的和.

样例输入 Sample Input

5

7

3 8

8 1 0

2 7 4 4

4 5 2 6 5

样例输出 Sample Output

30

数据范围及提示 Data Size & Hint
 

分类标签 Tags 点此展开

 
【代码】
 //(1)深搜
#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;
const int mmax=;
int a[mmax][mmax];
int n;
void dfs(int,int,int);
int ans;
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
for(int j=;j<=i;j++)
scanf("%d",&a[i][j]);
dfs(,,a[][]);//走到(1,1)目前的和为a[1][1]
cout<<ans;
return ;
}
void dfs(int x,int y,int c)
{
if(x==n)//深搜到最后
{
if(c>ans)//如果目前的和比之前找的大
ans=c;//更新
return;
}
dfs(x+,y,c+a[x+][y]);//深搜左边
dfs(x+,y+,c+a[x+][y+]);//深搜右边
}
//(2)记忆化搜索(上一种方法超时的原因是因为对于同一个点重复递归了)
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n;
const int mmax=;
int a[mmax][mmax],f[mmax][mmax];//f[x][y]为(x,y)到金字塔底部的最大值
int dfs(int,int);
int main()
{
scanf("%d",&n);
memset(f,-,sizeof(f));
for(int i=;i<=n;i++)
for(int j=;j<=i;j++)
scanf("%d",&a[i][j]);//输入
dfs(,);//从(1,1)深搜
cout<<f[][]<<endl;//输出(1,1)到底部的最大值
return ;
}
int dfs(int x,int y)
{
if(f[x][y]==-)//如果当前点没有递归过
{
if(x==n)f[x][y]=a[x][y];//如果已经到达底部,那么(x,y)到底部的和就是其本身
else
f[x][y]=a[x][y]+max(dfs(x+,y),dfs(x+,y+));//否则(x,y)到底部的和就等于本身加上左下和右下中较大的一个
}
return f[x][y];//返回
}
//(3)额。。。就是算出从头到每个点的最大和,最后扫一遍最后一行找最大值就好
#include<iostream>
#include<cstdio>
using namespace std;
int n;
const int maxx=;
int a[maxx][maxx],f[maxx][maxx];
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
for(int j=;j<=i;j++)
scanf("%d",&a[i][j]);
f[][]=a[][];//从头到(1,1)的和就是(1,1)本身
for(int i=;i<=n;i++)
{
for(int j=;j<=i;j++)
{
f[i][j]=max(f[i-][j],f[i-][j-])+a[i][j];//等于其上左右较大的一个加上其本身;‘
}
}
int ans=;
for(int i=;i<=n;i++)
ans=max(ans,f[n][i]);//扫最后一行找最大值
cout<<ans;
return ;
}

1625 codevs数字金字塔的更多相关文章

  1. 【USACO 1.5.1】数字金字塔

    [题目描述] 观察下面的数字金字塔. 写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大.每一步可以走到左下方的点也可以到达右下方的点. 7 3 8 8 1 0 2 7 4 4 4 ...

  2. 【java】for循环输出数字金字塔

    输出下列数字金字塔.    1  121 123211234321 public class deng { public static void main(String args[]) { int n ...

  3. P1216 数字金字塔

    P1216  数字金字塔 我们可以用 f [ i ] [ j ] 表示从(1,1)出发,到达(i,j)的最大权值和. (i , j)可以由(i - 1 , j)或者(i - 1 , j - 1)转化来 ...

  4. codevs 1795 金字塔 2

    codevs 1795 金字塔 2这个题比完全背包多了一个总数的限制,即一定要选(m+n)个,题中说总重量不超过n,所以至少选择m个重量为0的,然后初始化的时候,都填成重量为0的,然后再一个个地把它们 ...

  5. 洛谷 1.5.1 Number Triangles 数字金字塔

    Description 考虑在下面被显示的数字金字塔. 写一个程序来计算从最高点开始在底部任意处结束的路径经过数字的和的最大. 每一步可以走到左下方的点也可以到达右下方的点. 7 3 8 8 1 0 ...

  6. html标签内部简单加js 一维数组求最大值 最小值两个值位置和数字金字塔图形

     html标签内部,简单加js <a href=""></a><!DOCTYPE html PUBLIC "-//W3C//DTD XHTM ...

  7. 数字金字塔 动态规划(优化版) USACO 一维dp压缩版

    1016: 1.5.1 Number Triangles 数字金字塔 时间限制: 1 Sec  内存限制: 128 MB提交: 9  解决: 8[提交] [状态] [讨论版] [命题人:外部导入] 题 ...

  8. Python输出数字金字塔

    使用Python输出一个数字金字塔 运行结果: 源代码: ''' Python输出数字金字塔 ''' for x in range(1,10): print(' '*(15-x),end='') n= ...

  9. Codevs 数字三角形 问题合集

    1220 数字三角形 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 如图所示的数字三角形,从顶部出发,在每一结点可以选择向左走或得 ...

随机推荐

  1. asp.net 下载图片

    public class DownLoad : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Res ...

  2. HTML table元素

    搬运,内容来自HTML Dog. 简单示例 <!DOCTYPE html> <html> <body> <table> <tr> <t ...

  3. python对象类型----数字&字符串

    一数据类型:      float: 1.3e-3  1.3*10的负三次方 print (1.3e-3)    bin()  #转换为二进进制    oct() #转换为8进制    hex()#转 ...

  4. jQuery滑动杆打分插件

    在线演示 本地下载

  5. 在unity 中,使用http请求,下载文件到可读可写路径

    在这里我用了一个线程池,线程池参数接收一个带有object参数的,无返回值的委托 ,下载用到的核心代码,网上拷贝的,他的核心就是发起一个web请求,然后得到请求的响应,读取响应的流 剩下的都是常见的I ...

  6. Windows批量添加和删除IP

    随着天气变冷了,好多小伙伴都开始变懒了,都想用最快的方式完成任务 下面给大家介绍一下Windows批量添加和删除IP的办法 (1)批量添加IP 直接在CMD下边运行下边命令. for /l %i in ...

  7. Eclipse4.2安装样式插件

    1.插件地址 http://eclipse-color-theme.github.com/update 点击Eclipse菜单 Help>>Install New Software... ...

  8. Centos6.5安装glusterfs3.6.2

    硬件环境Centos6.5  glusterfs3.6.2 先安装必要的包 yum install flex bison 2. 下载glusterfs3.6.2 wget http://downloa ...

  9. skynet中动态库的处理

    skynet中的.so动态库由service-src中的c文件编译完后生成,其中最重要的是snlua.c. 源码地址:https://github.com/cloudwu/skynet/service ...

  10. spring启动加载类,手动加载bean

    方法一: public final class Assembler implements BeanFactoryPostProcessor { private static ConfigurableL ...