中级守护
4399 走迷宫
题目描述 Description
小P被困在了如下图所示的一个数字三角形迷宫里,每一条路都用一个数字表示。
现规定从最顶层走到最底层,每一步可沿左斜线向下或右斜线向下走。其中规定,假设三角形行数 n≤100,小P必须经过迷宫中的某一条路,使之走的所有路上数字之和最大。
输入描述 Input Description
n+1行,第一行三个数字n,x,y,分别表示三角形迷宫的行数、必须经过的路的坐标
下面n行,分别代表三角形迷宫每条路上的数字
输出描述 Output Description
一个整数,表示小P所走路径的数字之和最大值
样例输入 Sample Input
3 2 2
1
2 3
4 5 6
样例输出 Sample Output
10
数据范围及提示 Data Size & Hint
1<=n<=100
黄昊轩在2019-11-24 16:26:24追加了内容
小P路过一个n*n个格子大小的房间,房间的每个格子上都放有一定数量的金币。现在小P在这个房间的左上角,只能向下或向右移动,每次移动一格。每次经过某一个格子都可以捡起格子中的金币。
请你帮小P选择一条到达右下角的路,使得在移动的过程中能够捡到最多的金币。
输入描述 Input Description
第一行:N M ,表示房间是由一个N*M的格子组成
接下来有N行:每行有M个正整数,Xi1 Xi2 ……Xim 表示各位置中的金币数(单个空格隔开)
输出描述 Output Description
输出有一个整数, 表示小P捡到最多的金币数
样例输入 Sample Input
3 4
3 1 2 8
5 3 4 6
1 0 2 3
样例输出 Sample Output
24
数据范围及提示 Data Size & Hint
1≤N M≤20,0≤Xij≤500
中级守护
这题是数字金字塔,用递推的思路,一下是普通数字金字塔的代码:
for(1~n)
for(1~i)
cin>>a[i][j];
f[1][1]=a[1][1];
for(2~n)
for(1~i)
f[i][j]=max(f[i-1][j],f[i-1][j-1])+a[i][j];
int m=0;
for(1~n)
m=max(f[n][i],m);
最后输出m;
我也只能提供到这里了,剩下的自己想吧