zoukankan      html  css  js  c++  java
  • poj 1789 prim 最小生成树

    就是不断选择最小的 不断更新最短距离,本题要注重问题的转换

    4
    aaaaaaa
    baaaaaa
    abaaaaa
    aabaaaa
    0

    #include <stdio.h>
    #define MAX 2005
    int vis[MAX];
    int distans[MAX];
    char str[MAX][7];
    
    int n;
    int sum,min;
    
    int dist(char *str1,char *str2)
    {
    	int d,i;
    
    	for(i=0,d=0;i<7;i++)
    	{
    		if(str1[i]!=str2[i])
    			d++;
    	}
    
    	return d;
    }
    
    int prim()
    {
    	int i,v,j;
    
    	sum=0;
    
    	vis[0]=1;
    
    	for(i=1;i<n;i++)
    		distans[i]=dist(str[0],str[i]);
    
    	for(j=1;j<n;j++)
    	{
    		min=9;
    		for(i=0;i<n;i++)
    		{
    			if(!vis[i]&&distans[i]<min)
    			{
    				min=distans[i];
    				v=i;
    			}
    		}
    		vis[v]=1;
    		sum+=min;
    		for(i=0;i<n;i++)
    		{
    			int k=dist(str[v],str[i]);
    			if(distans[i]>k&&!vis[i])
    			{
    				distans[i]=k;
    			}
    		}
    	}
    
    	return sum;
    }
    
    int main()
    {
    	int i;
    
    	while(scanf("%d",&n),n)
    	{
    		for(i=0;i<n;i++)
    		{
    			scanf("%s",&str[i]);
    			vis[i]=0;
    		}
    
    		printf("The highest possible quality is 1/%d.\n",prim());
    	}
    
    	return 0;
    }
    

      

  • 相关阅读:
    Python request
    Dockerfile详解
    k8s 英文文档翻译
    k8s 相关命令
    k8s 廖老师的分享
    Docker docker-compose安装
    Mysql 锁库与锁表
    Docker 二进制安装docker
    Java多线程的同步控制记录
    JAVA并行程序基础
  • 原文地址:https://www.cnblogs.com/jackes/p/2434061.html
Copyright © 2011-2022 走看看