zoukankan      html  css  js  c++  java
  • POJ 1789 Truck History

    题意大概是这样的:用一个7位的string代表一个编号,两个编号之间的distance代表这两个编号之间不同字母的个数。一个编号只能由另一个编号衍生出来,代价是这两个编号之间相应的distance,现在要找出一个衍生方案,使得总代价最小,也就是distance之和最小。

    #include<iostream>
    #include<string>
    using namespace std;
    int map[2010][2010],vis[2010],n,sum;
    void f(int t)
    {
    	int i,j=n-2,min=0;
    	while(j--)
    	{
    		for(i=1;i<n;i++) if(!vis[i])
    		{
    			if(!min) min=i;
    			if(map[0][i]>map[t][i]) map[0][i]=map[t][i];
    			if(map[0][min]>map[0][i]) min=i;
    		}
    		vis[min]=1;
    		t=min;
    		sum+=map[0][min];
    		min=0;
    	}
    }
    int main()
    {
    	char s[2010][8];
    	int i,j,k,min;
    	while(cin>>n && n)
    	{
    		memset(map,0,sizeof(map));
    		memset(vis,0,sizeof(vis));
    		for(i=0;i<n;i++)
    			cin>>s[i];
    		for(i=0;i<n;i++)
    			for(j=0;j<=i;j++)
    				for(k=0;k<7;k++)
    					if(s[i][k]!=s[j][k]) map[i][j]=++map[j][i];
    		min=1;
    		for(i=1;i<n;i++)
    			if(map[0][min]>map[0][i]) min=i;
    		vis[min]=1;
    		sum=map[0][min];
    		f(min);
    		cout<<"The highest possible quality is 1/"<<sum<<"."<<endl;
    	}
    }
    


  • 相关阅读:
    DTDebug的使用
    金字塔原理
    C/C++ 加快项目编译速度
    C/C++ C++11 enum class
    微信公众平台 第三方平台
    Protobuf根据.proto文件在运行期生成message
    工具 Bazel
    计算机网络 OAuth
    计算机网络 WebSocket
    C/C++ 函数默认参数
  • 原文地址:https://www.cnblogs.com/java20130726/p/3218241.html
Copyright © 2011-2022 走看看