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 |
Re:大大来看看吧 wa的好纠结In Reply To:大大来看看吧 wa的好纠结 Posted by:niuzheng168 at 2009-09-16 16:37:03 > #include <iostream>//这个去掉 > #include <queue> > #include <algorithm>//这个去掉 > #include <string.h>//加上stdio.h和stdlib.h > using namespace std; > > char str[90][1005];//str[1005][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]);//printf("%s\n",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