DFS
题目:https://www.luogu.com.cn/problem/P1216 //还需理解
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
int r; int num[1005][1005];
int f[1005][1005];
int dfs(int n, int m) {
if (n > r || m < 1 || m > r)
return 0;
if (f[n][m] != -1)
return f[n][m];
return f[n][m] = max(dfs(n + 1, m), dfs(n + 1, m + 1)) + num[n][m];
}
int main()
{
cin>>r;
memset(f, -1, sizeof(f));
for(int i = 1;i <= r;i++)
{
for(int j = 1;j <= i;j++)
{
cin>>num[i][j];
}
}
cout << dfs(1,1) << "\n";
return 0;
}
该题的难点思路在于从下向上确定DFS过程中的顺序。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述