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 |
哪位大虾做出来可以教教我吗?我憋好久憋出来一个超时。。。我的邮箱是nabice@163.com 谢谢。。。。。。。。 #include<iostream> #include<string> using namespace std; int len_a,len_b,n,len; char rst[10000][81]; char result[1000][81]; string a,b; string c(81,'\0'); void strcpy(char *to,const char *from){ for(;(*to=*from)!='\0';++from,++to); } int strcmp(char *a,char *b){ int result; while(1){ if((result=*a-*b)!=0) break; a++;b++; if(!*a) break; } return result; } void sort(){ int j=0; int i=0; int j_temp; int flag; strcpy(result[j],rst[i]); for(int i=1;i<n;i++){ j_temp = j; flag = strcmp(result[j],rst[i]); while((j_temp>=0)&&(flag>0)){ strcpy(result[j_temp+1],result[j_temp]); j_temp--; flag = strcmp(result[j_temp],rst[i]); } if(flag){ strcpy(result[j_temp+1],rst[i]); j++; } } n = j + 1; } int find_b(int i,int j,int k){ int flag = 0; int temp_a,temp_b; for(int temp=j;temp<len_b;temp++){ if(a[i]==b[temp]){ flag = 1; j = temp + 1; break; } } if(flag&&i+1<len_a){ c[k]=a[i]; k++; for(int temp=i+1;temp<len_a;temp++){ temp_a = find_b(temp,j,k); temp_b = (temp_b>temp_a)?temp_b:temp_a; } return temp_b; }else{ if(flag){ c[k] = a[i]; k++; } c[k] = '\0'; if(k>len){ len = k; n = 0; c.copy(rst[n++],k+1); }else if(k == len){ c.copy(rst[n++],k+1); } return k; } } int main(){ while(true){ n=0; len=0; a=b=""; cin >> a >> b; len_a = a.length(); len_b = b.length(); if(!len_a||!len_b) break; for(int temp=0;temp<len_a;temp++){ find_b(temp,0,0); } sort(); for(int i=0;i<n&&i<1000;i++) cout << result[i] <<endl; } } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator