日志

H学校开展程序设计实训项目,项目共包括n个模块(编号为1~n),按照编号顺序依次进行培训。y老师决定把程序设计实训项目交给dr公司的三位讲师ta, tb, tc讲授,每个模块可以由其中一位讲师讲授,需要对应的培训费。y老师考虑到讲师培训辛苦,所以决定相邻两个模块不能由同一位讲师讲授,即:第1与第2个模块不是同一位讲师,第n个模块与第n-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;

}

全部评论

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务