poj 1789 根据字符串中字符的差异来确定距离的最小生成树(水)
来源:互联网 发布:淘宝美工能自学吗 编辑:程序博客网 时间:2024/05/02 01:28
题意:输入N,然后N行,每行输入一个长度是7的字符串,比较每个字符串上相同位置的字符,如果不同的话这两个点的距离加一
思路:prime求最小生成树,1/Q就是最大的值。
#include<iostream>using namespace std;int N;int map[2100][2100];char s[2100][10];int dis(char *str1,char *str2){ int ans=0; for(int k=0;k<7;k++) { if(str1[k]!=str2[k]) ans++; } return ans;}int prime(int v){ int i,j,k,minn,sum=0; int lowcost[2100],vis[2100]; for(i=1;i<=N;i++) { lowcost[i]=map[v][i]; vis[i]=0; } vis[v]=1; for(i=2;i<=N;i++) { minn=100000; for(j=1;j<=N;j++) { if(lowcost[j]<minn&&!vis[j]) minn=lowcost[j],k=j; } sum+=minn,vis[k]=1; for(j=1;j<=N;j++) { if(lowcost[j]>map[k][j]&&!vis[j]) lowcost[j]=map[k][j]; } } return sum;}int main(){ int i,j,k,g,len1,len2,high; while(scanf("%d",&N)!=EOF) { if(N==0) break; for(i=0;i<N;i++) scanf("%s",s[i]); for(i=0;i<N;i++) { for(j=0;j<N;j++) { if(i!=j) map[j+1][i+1]=map[i+1][j+1]=dis(s[i],s[j]); else map[i+1][j+1]=100000; } } high=prime(1); /*for(i=1;i<=N;i++) { for(j=1;j<=N;j++) printf("%d ",map[i][j]); cout<<endl; }*/ printf("The highest possible quality is 1/%d.\n",high); //system("pause"); }}
- poj 1789 根据字符串中字符的差异来确定距离的最小生成树(水)
- 数组中两个字符串的最小距离
- 根据字符出现的权重生成字符串
- POJ 1789 求车类型字符串距离最小值 最小生成树 prim算法
- 【DP生成回文字符串的最小插入字符数】POJ 1159
- 字符串之数组中两个字符串的最小距离
- 字符串问题---数组中两个字符串的最小距离
- 字符串数组中两个字符串的最小距离
- 曼哈顿最小距离生成树(poj 3241&& UVALive 3662)
- POJ 3241 (曼哈顿距离最小生成树)
- POJ 3241 Object Clustering 曼哈顿距离求最小生成树的第K小边
- 根据给定的字符生成指定长度的字符串
- 如何根据自定义Label的size来确定字符串的size
- 根据页面滚动的距离确定导航栏是否置顶
- 求数组中两个字符串的最小距离 Python 版
- POJ 1789 权值为字符串差值的最小生成树
- 根据单词中字符的位置,确定单词为句中第几个
- 关于曼哈顿距离下的最小生成树
- C#时间控件使用
- Mongodb集群——master/slave
- SQL中使用update inner join
- Fix Project Properties
- android Activity常用属性
- poj 1789 根据字符串中字符的差异来确定距离的最小生成树(水)
- cent os 5.5 安装
- iPad应用的十大用户体验设计准则
- 全面掌握Java的enum类
- Spring MVC + JPA + Hibernate + GlassFish V3 + MySQL 实现J2EE应用的常用配置模板详解
- 产生随机数
- apk文件的安装
- 线程小例子 总结
- CentOS 6.0 架设WEB服务器无法访问