数据结构好重要啊!
先回去睡觉 明天再来解释题目。。
#include <cstring>
#include <string>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <vector>
#include <queue>
#include <map>
#define inf 0x3f3f3f3f
#define ll __int64
using namespace std;
int ans,p[2060];
char c,s[1030][1030];
int main()
{
int i,j,n,l;
while(scanf("%d%d",&n,&l)&&(n||l))
{
for(i=0;i<n;i++)
scanf("%s",s[i]);
ans=0;
for(i=0;i<l;i++)
{
for(j=0;j<n;j++)
p[n+j]=1<<(s[j][i]-‘A‘);
for(j=n-1;j>0;j--)
{
if(!(p[j+j]&p[j+j+1]))
{
ans++;
p[j]=(p[j+j]|p[j+j+1]);
}
else p[j]=(p[j+j]&p[j+j+1]);
}
c=‘A‘;
while(p[1]>>=1) c++;
putchar(c);
}
printf(" %d\n",ans);
}
return 0;
}
zoj 1102 Phylogenetic Trees Inherited
原文:http://blog.csdn.net/u011032846/article/details/19358475