此题也是比较基础的动态规划题,类似于数字金字塔,可以用滚动数组和记忆化搜索来解决,下面附上代码。
#include <iostream>
using namespace std;
int a[105][105];
int main()
{
int n, m, b, c;
cin >> n;
for (int i = 1; i <= n; ++i)
{
cin >> m;
for (int j = 1; j <= m; ++j)
{
a[i][j] = 1e7;初始化
cin >> b;
while (b != 0)//滚动数组
{
cin >> c;
a[i][j] = min(a[i - 1][b] + c ,a[i][j]);
cin >> b;
}
}
}
int ans = 1e7;
for (int i = 1; i <= m; ++i)
ans = min(ans, a[n][i]);
cout << ans;
return 0;
}