poj 1789
来源:互联网 发布:淘宝网水晶家纺被子 编辑:程序博客网 时间:2024/06/02 13:20
POJ的题目,读起来真费事,,,意思是给你N串有7个字符的字符串,任意两个字符串的距离就是两个字符串相同位置上不同字符数量之和(如aaaa和baba,第一位和第三位不同,所以距离为2),现在让我们求一个方案,要求所有串都必须由其它串演变而来(除了初始串),要求衍生所需要的总距离。其实就是求最小生成树。
代码:
#include<iostream>#include<cstring>using namespace std;#define maxn 20000int n,flag[2000],low[2000],map[2000][2000];char s[2005][8];void prim(){ int i,j,minn,pos,sum=0; memset(flag,0,sizeof(flag)); for(i=2;i<=n;i++)low[i]=map[1][i]; for(i=2;i<=n;i++) { minn=maxn; for(j=2;j<=n;j++) if(!flag[j]&&low[j]<minn){minn=low[j];pos=j;} sum+=minn; // cout<<minn<<endl; flag[pos]=1; for(j=2;j<=n;j++) if(!flag[j]&&map[pos][j]<low[j]) low[j]=map[pos][j]; } cout<<"The highest possible quality is 1/"<<sum<<"."<<endl; return;}int main(){ int i,j,k,sum; while(cin>>n&&n) { for(i=1;i<=n;i++)cin>>s[i]; for(i=1;i<=n;i++) for(j=1;j<=n;j++) { for(k=0,sum=0;k<=6;k++){if(s[i][k]-s[j][k]==0)continue;sum++;} map[i][j]=sum; //cout<<i<<" "<<j<<" "<<sum<<endl; } prim(); }}
0 0
- POJ 1789
- POJ 1789
- poj 1789
- poj 1789
- POJ 1789
- poj 1789
- POJ 1789
- POJ 1789
- poj.1789
- POJ 1789
- poj-1789
- poj 1789
- poj 1789
- POJ 1789
- poj 1789
- POJ-1789
- POJ 1789
- POJ 1789
- Asp图片大小处理及AspJpeg失效设置
- 通过反射获取泛型类的类型
- 【java】面向对象——封装性、继承性和多态性
- Android帧缓冲区(Frame Buffer)硬件抽象层(HAL)模块Gralloc的实现原理分析
- 8CollapsingToolbarLayout源码分析
- poj 1789
- Java IO字符流读取文件总结
- JSP笔记
- vim常用操作
- 2-1 众数问题
- B/S总结
- 在屏幕中显示下拉表框
- 怎么吸引蜘蛛
- day14 python Css中的display