poj1695 dp思维 不错

题意:给三辆车,将1~n这n个点依次跑完,也就是说要想到达i+1,必须先到达i,

每两个点之间都有花费,问最小的话费是什么。

思路:设dp[i][j][k],为走的最远的车,次元的车,最近的车在位置i,j,k的时候的最小

花费。具体转移看代码,感觉非常巧妙。

#include
#include
#include
using namespace std;
const int INF=0x3f3f3f3f;
int dp[31][31][31];//分别为走的最远,次远,最近的车的位置
int cost[31][31], n;

int main(){
    int T;
    scanf("%d", &T);
    while(T--){
        scanf("%d", &n);

        for(int i=1; i

 

你可能感兴趣的:(dp)