数据结构好重要啊!
先回去睡觉 明天再来解释题目。。
#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; }