zoukankan      html  css  js  c++  java
  • Neighbor House

    题目链接:http://acm.hust.edu.cn/vjudge/problem/visitOriginUrl.action?id=26767

    题意:

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

          案例:

          Sample Input

         2

         4

         13 23 12

         77 36 64

         44 89 76

         31 78 45

         3

         26 40 83

         49 60 57

         13 89 99

         Sample Output

         Case 1: 137

         Case 2: 96

    思路分析:

          通过两层循环,找出上下两家人房子图不同颜色花费的最小值,再经过n次的再循环,找到最后一层的最小值,即为最少花费。

          需要经过相关的预处理。

    源代码如下:

     1 #include<iostream>
     2 #include<cstdio>
     3 using namespace std;
     4 int main()
     5 {
     6     int T,t=0,a[22][3],d[22][5],n,m;
     7     scanf("%d",&T);
     8     while(T--)
     9     {
    10         int i,j,k;
    11         scanf("%d",&n);
    12         for(i=0;i<n;i++)
    13             scanf("%d%d%d",&a[i][0],&a[i][1],&a[i][2]);
    14         for(i=0;i<=n;i++)                //预处理
    15             d[i][4]=d[i][0]=20000;
    16         for(i=0;i<=3;i++)
    17             d[0][i]=0;                  //预处理
    18         for(i=1;i<=n;i++)
    19             for(j=1;j<=3;j++)
    20             {
    21                 m=20000;               //使m为最大值,以便第一个数绝对会替换
    22                 for(k=1;k<=3;k++)
    23                     if(k!=j&&d[i-1][k]+a[i-1][j-1]<m)
    24                         m=d[i-1][k]+a[i-1][j-1];    
    25                 d[i][j]=m;
    26             }
    27         for(i=1;i<5;i++)
    28             if(d[n][i]<d[n][0])              //找到最小值
    29                 d[n][0]=d[n][i];
    30         printf("Case %d: %d
    ",++t,d[n][0]);
    31     }
    32     return 0;
    33 }
  • 相关阅读:
    leetcode 114. 二叉树展开为链表
    leetcode 338. 比特位计数
    leetcode 128. 最长连续序列
    leetcode 22. 括号生成
    leetcode 200. 岛屿数量
    leetcode 70. 爬楼梯
    P6072 『MdOI R1』Path
    CF1574D The Strongest Build
    『MdOI R1』Treequery
    CF1562E Rescue Niwen!
  • 原文地址:https://www.cnblogs.com/q-c-y/p/4734809.html
Copyright © 2011-2022 走看看