Descriptionios
Input算法
Outputide
Sample Inputthis
4 aaaaaaa baaaaaa abaaaaa aabaaaa 0
Sample Outputspa
The highest possible quality is 1/3.
須要用普里母算法這種算法讓我非常糾結,努力了一天才勉強搞定,非常傷自尊啊blog
下面是我同窗的代碼ip
1 #include<iostream> 2 #include<cstdio> 3 using namespace std; 4 int grah[2100][2100]; 5 int sum=0; 6 void pim(int n)//用Kruskal會超時 7 { 8 int i,j,pos; 9 int min,v[2100]= {0},d[2100]; 10 for(i=1; i<=n; i++)// 11 d[i]=grah[1][i]; 12 v[1]=1; 13 for(i=2; i<=n; i++) 14 { 15 min=99999999; 16 for(j=1; j<=n; j++) 17 { 18 if(!v[j]&&min>d[j]) 19 { 20 min=d[j]; 21 pos=j; 22 } 23 } 24 sum+=min; 25 v[pos]=1; 26 for(j=1; j<=n; j++) 27 { 28 if(!v[j]) 29 { 30 if(d[j]>grah[pos][j]) 31 d[j]=grah[pos][j]; 32 } 33 } 34 } 35 } 36 int main() 37 { 38 int n,i,j,k,cou; 39 char s[2100][80]; 40 while(cin>>n&&n) 41 { 42 getchar(); 43 for(i=1; i<=n; i++) 44 cin>>s[i]; 45 for(i=1; i<=n; i++) 46 { 47 for(j=i+1; j<=n; j++) 48 { 49 cou=0; 50 for(k=0; k<7; k++) 51 { 52 if(s[i][k]!=s[j][k])//若是有一個字母不一樣就+1 53 cou++; 54 } 55 grah[i][j]=grah[j][i]=cou;//標出權重 56 } 57 grah[i][i]=0;//本身到本身的距離爲0; 58 } 59 pim(n); 60 printf("The highest possible quality is 1/%d.\n",sum); 61 sum=0; 62 } 63 return 0; 64 }