Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
大大来看看吧 wa的好纠结#include <iostream> #include <queue> #include <algorithm> #include <string.h> using namespace std; char str[90][1005]; int matrix[1005][1005]; int visit[1005]; int cmp(const void *a,const void *b) { return strlen((char *)a)-strlen((char *)b); } int judge(char *a,char *b) { int len_a=strlen(a); int len_b=strlen(b); int i,j,count=0; if(len_b-len_a==1) { for(i=0,j=0;a[i]||b[j];) { if(a[i]==b[j]) { i++; j++; } else { count++; j++; } if(count>1) return 0; } if(i==len_a&&j==len_b) return 1; else return 0; } else return 0; } void bfs(int x,int n) { queue<int> q; int temp,t=0,s=0; int i,j,max=0,ans=0,len=0; memset(visit,0,sizeof(visit)); len=strlen(str[0]); temp=0; q.push(temp); while(!q.empty()) { t=q.front(); q.pop(); if(!visit[t]) { for(i=0;i<=n;i++) { if(matrix[t][i]!=0) { s=i; q.push(s); len=strlen(str[s]); } if(len>=max) { ans=s; max=len; } } visit[t]=1; } } printf("%s",str[ans]); } int main() { int n,i,j; scanf("%d %s",&n,str[0]); for(i=1;i<=n;i++) scanf("%s",str[i]); qsort(str+1,n,sizeof(str[0]),cmp); memset(matrix,0,sizeof(matrix)); for(i=0;i<n;i++) for(j=i+1;j<=n;j++) matrix[i][j]=judge(str[i],str[j]); bfs(0,n); return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator