日志
H学校开展程序设计实训项目,项目共包括n个模块(编号为1~n),按照编号顺序依次进行培训。y老师决定把程序设计实训项目交给dr公司的三位讲师ta, tb, tc讲授,每个模块可以由其中一位讲师讲授,需要对应的培训费。y老师考虑到讲师培训辛苦,所以决定相邻两个模块不能由同一位讲师讲授,即:第1与第2个模块不是同一位讲师,第n个模块与第n-1个模块不是同一位讲师,第i(1 < i < n)个模块与第i - 1个模块和第i + 1个模块不是同一个位讲师。现在要将项目的n个模块安排合适的讲师,问所有的模块都安排合适的讲师之后最少的总培训费?
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int n;
cin>>n;
int a[n][3];
for (int i = 0; i < n; i++) {
cin>>a[i][0]>>a[i][1]>>a[i][2];
}
int dp[n][3];
dp[0][0] = a[0][0];
dp[0][1] = a[0][1];
dp[0][2] = a[0][2];
for (int i = 1; i < n; i++) {
dp[i][0] = min(dp[i-1][1], dp[i-1][2]) + a[i][0];
dp[i][1] = min(dp[i-1][0], dp[i-1][2]) + a[i][1];
dp[i][2] = min(dp[i-1][0], dp[i-1][1]) + a[i][2];
}
int result = min({dp[n-1][0], dp[n-1][1], dp[n-1][2]});
cout<<result;
return 0;
}