数字塔问题

cpp 复制代码
#include<iostream>
using namespace std;
//从下向上得到最优值
void dtower(int a[][100],int s[][100],int n)
{
    for(int i=n; i>=1; i--)
    {
        for(int j=1; j<=i; j++)
        {
            if(i==n)
                s[i][j]=a[i][j];
            else
            {
                int t=s[i+1][j];
                if(t<s[i+1][j+1])
                    t=s[i+1][j+1];
                s[i][j]=a[i][j]+t;
            }

        }
    }
}
void Traceback(int a[][100],int s[][100],int n,int i,int j)
{
    if(i==n)
        cout<<i<<" "<<j<<endl;
    else
    {
        cout<<i<<" "<<j<<endl;
        if(s[i][j]==a[i][j]+s[i+1][j])
            Traceback(a,s,n,i+1,j);
        else
            Traceback(a,s,n,i+1,j+1);
    }
}
int main()
{
    int n;cin>>n;
    int a[100][100]={0},s[100][100]={0};
    for(int i=1;i<=n;i++)
        for(int j=1;j<=i;j++)
        cin>>a[i][j];

    dtower(a,s,n);
    cout<<"s[i][j]:"<<endl;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=i;j++)
            cout<<s[i][j]<<" ";
        cout<<endl;
    }

    Traceback(a,s,n,1,1);
    return 0;
}

5

30

23 21

20 13 10

7 12 10 22

4 5 2 6 5

相关推荐
spcier17 分钟前
图论拓扑排序-Kahn 算法
算法·图论
知星小度S17 分钟前
动态规划(一)——思想入门
算法·动态规划
ysa05103020 分钟前
动态规划-逆向
c++·笔记·算法
燃于AC之乐23 分钟前
我的算法修炼之路--7—— 手撕多重背包、贪心+差分,DFS,从数学建模到路径DP
c++·算法·数学建模·深度优先·动态规划(多重背包)·贪心 + 差分
闻缺陷则喜何志丹23 分钟前
【BFS 动态规划】P12382 [蓝桥杯 2023 省 Python B] 树上选点|普及+
c++·蓝桥杯·动态规划·宽度优先·洛谷
chinesegf32 分钟前
文本嵌入模型的比较(一)
人工智能·算法·机器学习
We་ct1 小时前
LeetCode 6. Z 字形变换:两种解法深度解析与优化
前端·算法·leetcode·typescript
REDcker2 小时前
Redis容灾策略与哈希槽算法详解
redis·算法·哈希算法
福楠2 小时前
C++ STL | map、multimap
c语言·开发语言·数据结构·c++·算法
Sarvartha2 小时前
二分查找学习笔记
数据结构·c++·算法