BUCT-OJ 2060 数字三角形4

【题目来源】: TYVJ 1084

【题目链接】:点击打开链接

【解题思路】:

此题我的思路和数字三角形3的思路一样,只不过(n/2,n/2)换成了待输入的点(x,y),必然经过一点,那我就从这点为分界,先从顶递推至此点所在行,再从底递推至此点所在行,两次的结果累加在此点上,即为所得结果

A C代码】:

#include <iostream> 
#include <algorithm> 
#include <cstring> 
#include <cstdio> 
using namespace std; 
  
#define maxn 30 
  
int arr[maxn][maxn]; 
int main() 
{  
    int n, i, j, x, y; 
    while(~scanf("%d", &n)) 
    { 
        memset(arr, 0, sizeof(arr)); 
        for(i = 1; i <= n; i++) 
        { 
            for(j = 1; j <= i; j++) 
               scanf("%d", &arr[i][j]); 
        } 
        scanf("%d%d", &x, &y); 
        for(i = n; i > x; i--) 
        { 
            for(j=1; j <= i; j++) 
            { 
                arr[i-1][j] += max(arr[i][j], arr[i][j+1]); 
            } 
        } 
        for(i = 1; i < x; i++) 
        { 
            for(j=1; j <= i+1; j++) 
            { 
                arr[i+1][j] += max(arr[i][j-1], arr[i][j]); 
            } 
        } 
        printf("%d\n", arr[x][y]); 
    } 
    return 0; 
} 


转载于:https://www.cnblogs.com/litaotao/archive/2013/05/19/3592475.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值