zoukankan      html  css  js  c++  java
  • 给房子涂色

    是有n户人家的房子排成一排,打算把他们的房子图上颜色,有red、green、blue三种颜色,每家人涂不同的颜色要花不同的费用,而且相邻两户人家之间的颜色要不同,求最小的总花费费用。

    输入格式:

    第一行输入n

    接下来n行输入每种房子涂red green blue 颜色的价格 cost1 cost2 cost3

    输出样例:

    4

    13 23 12

    77 36 64

    44 89 76

    31 78 45

    输出样例:

    137

    输入样例:

    3

    26 40 83

    49 60 57

    13 89 99

    输出样例:

    96

    输出最小花费

    #include<iostream>
    #include<string.h>
    #include<math.h>
    
    using namespace std;
    int n,m,v; 
    int ans;
    int mod=1e9+7;
    int dp[105][105],cost[105][3];
    bool vis[105]; 
    
    int main(){
        cin>>n;
        for(int i=0;i<n;i++){
            cin>>cost[i][0]>>cost[i][1]>>cost[i][2];
        }
        dp[0][0]=dp[0][1]=dp[0][2]=0;                        //初始状态
        for(int i=1;i<=n;i++){
            for(int j=0;j<3;j++){                                            //j 表示此时选第 j 种颜色 
                dp[i][j]=99999999;                                            
                for(int k=0;k<3;k++){                                        //k 表示上一个选 k 的颜色 用来排除选相同的颜色 
                    if(j==k){
                        continue;
                    }
                    dp[i][j]=min(dp[i-1][k]+cost[i-1][j],dp[i][j]); //因为 i要比较i-1的价格 则从 1 开始,dp[i-1][k]表示选上一个房子选k的价格 
                }                                                    //而cost从0开始,cost[i-1][j]表示选此时的房子时的价格 
            }
        }
        ans=min(min(dp[n][0],dp[n][1]),dp[n][2]);                  //从最后一个房子选不同颜色时的最小值 
        cout<<ans;
        return 0;
    }
  • 相关阅读:
    SVD与PCA
    Service(二):通信
    Service(一):认识service、绑定Service
    计划(四)
    Android studio 安装过程中遇到的问题
    UFLDL 教程学习笔记(四)
    opencv之dft及mat类型转换
    《第一行代码》(四)
    《第一行代码》
    计划(三)
  • 原文地址:https://www.cnblogs.com/xusi/p/12493015.html
Copyright © 2011-2022 走看看