zoukankan      html  css  js  c++  java
  • poj 1789

    题意:给定N个字符串  每个字符串可以看为一个点  每个点之间都有边   长度为对应两点之间字符不同的个数  把这些点连接起来  求最小的边长

    思路:Kruskal  算法的简单应用

    #include<iostream>
    #include<cstring>
    using namespace std;
    char a[2222][10];
    int dist[2222];
    int s[2222];
    int n;
    int e(int u,int v)
    {
    	int l=0;
    	for(int i=0;i<7;i++)
    		if(a[u][i]!=a[v][i])
    			l++;
    	return l;
    }
    void Kruskal()
    {
    	int sum=0;
    	int i,j;
    	dist[1]=0;
    	memset(s,0,sizeof(s));
    	for(i=2;i<=n;i++)
    	{
    		int l=0;
    		for(j=0;j<7;j++)
    			if(a[1][j]!=a[i][j])
    				l++;
    		dist[i]=l;
    	}
    	s[1]=1;
    	for(i=1;i<=n;i++)
    	{
    		int v=-1;
    		int min=999999999;
    		for(j=2;j<=n;j++)
    		{
    			if(dist[j]<min&&!s[j])
    				min=dist[j],v=j;
    		}
    		if(v==-1) break;
    		sum+=dist[v];
    		s[v]=1;dist[v]=0;
    		for(j=2;j<=n;j++)
    		{
    			if(dist[j]>e(v,j))
    				dist[j]=e(v,j);
    		}
    	}
    	printf("The highest possible quality is 1/%d.
    ",sum);
    }
    int main()
    {
    	int i;
    	while(scanf("%d",&n)!=EOF)
    	{
    		if(n==0) break;
    		for(i=1;i<=n;i++)
    			scanf("%s",a[i]);
    		Kruskal();
    	}
    	return 0;
    }
    	
    
  • 相关阅读:
    LeetCode 72. Edit Distance
    LeetCode 71. Simplify Path
    LeetCode 70. Climbing Stairs
    LeetCode 69. Sqrt(x)
    Ubuntu系统测评
    itchat 爬了爬自己的微信通讯录
    logistic回归模型
    多元线性回归模型
    可乐鸡翅制作难点
    梯度下降算法&线性回归算法
  • 原文地址:https://www.cnblogs.com/zhangdashuai/p/3774649.html
Copyright © 2011-2022 走看看