BUCT-OJ 2060 数字三角形4

来源:互联网 发布:程序员培训班多少钱 编辑:程序博客网 时间:2024/04/28 09:38

【题目来源】: 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; } 


原创粉丝点击