zoukankan      html  css  js  c++  java
  • Truck History POJ 1789 ZOJ 2158 Prim算法

    就是Prim算法,求最小生成树,把每个汽车编号看成点,两个编号的距离,也就是相同位置不同字符的数目,就看做边,显然,看成无向图,谁生成谁自己想想就行了 ,这里边比较多,用Prim算法。

    代码:

    View Code
     1 #include <cstdio>
     2 #define MAXN 2005
     3 int n;
     4 int lowcost[MAXN];
     5 int edge[MAXN][MAXN];
     6 int dis(char a[],char b[])
     7 {
     8     int s = 0;
     9     for(int i=0; i<7; i++)
    10         if(a[i] != b[i] ) s++;
    11     return s;
    12 }
    13 void Prim()
    14 {
    15     int i,j;
    16     int sum=0;
    17     for(i=0; i<n; i++)
    18         lowcost[i] = edge[0][i];
    19     lowcost[0] = -1;
    20     for(i=1; i<n; i++)
    21     {
    22         int min= 1000000;
    23         int v;
    24         for(j=0; j<n; j++)
    25         {
    26             if(lowcost[j] != -1 && lowcost[j] <min)
    27             {
    28                 v = j;
    29                 min = lowcost[j];
    30             }
    31         }
    32         sum += lowcost[v];
    33         lowcost[v] = -1;
    34         for(j=0; j<n; j++)
    35         {
    36             if(lowcost[j] != -1 && edge[v][j] < lowcost[j])
    37                 lowcost[j] = edge[v][j];
    38         }
    39     }
    40     printf("The highest possible quality is 1/%d.\n",sum);
    41 }
    42 int main()
    43 {
    44 //    freopen("out.cpp","r",stdin);
    45     while(~scanf("%d",&n) && n != 0)
    46     {
    47         int i,j;
    48         char a[MAXN][8];
    49         for(i=0; i<n; i++)
    50             scanf("%s",a[i]);
    51         for(i=0; i<n; i++)
    52         {
    53             for(j =i; j<n; j++)
    54             {
    55                 if(i == j ) edge[i][j] = 0;
    56                 else
    57                 {
    58                     edge[i][j] = dis(a[i],a[j]);
    59                     edge[j][i] = edge[i][j];
    60                 }
    61             }
    62         }
    63         Prim();
    64     }
    65     return 0;
    66 }

    这题很成功地过了。

  • 相关阅读:
    yolo v2使用总结
    Oozie 实战之 shell
    Oozie 之 sqoop 实战
    Oozie 实战之 Hive
    Oozie wordcount实战
    Oozie 安装及 examples app 的使用
    Oozie是什么
    Flume使用(案例分析)
    一个数据仓库的设计架构
    Flume是什么
  • 原文地址:https://www.cnblogs.com/allh123/p/2992314.html
Copyright © 2011-2022 走看看