1 # include<iostream> 2 # include<string> 3 # include<cstring> 4 using namespace std; 5 int main(){ 6 int n=0,m=0; 7 string a[1000],b[5000]; 8 int pos[5000]; 9 bool f[5000]; 10 while(cin>>n){ 11 int i=0,j=0; 12 for(i=1;i<=n;i++) 13 cin>>a[i]; 14 cin>>m; 15 for(i=1;i<=m;i++) 16 cin>>b[i]; 17 memset(pos,0,sizeof(pos)); 18 for(i=1;i<=m;i++) 19 { 20 for(j=1;j<=n;j++) 21 if(b[i]==a[j]){ 22 pos[i]=j; 23 break; 24 } 25 } 26 int cur=-1; 27 int k=0; 28 int last=-1; 29 for(i=1;i<=m;i++) 30 if(pos[i]!=0) break; 31 if(i<=m && n==1) 32 { 33 cout<<"-1"<<endl; 34 continue; 35 } 36 for(i=1;i<=m;i++) 37 { 38 memset(f,false,sizeof(f)); 39 int cnt=0; 40 for(j=i;j<=m;j++){ 41 //cout<<"pos"<<j<<pos[j]<<" "; 42 if(pos[j]) 43 { 44 if(f[pos[j]]==false) 45 { 46 f[pos[j]]=true; 47 cnt++; 48 if(cnt==n-1) last=pos[j]; 49 if(cnt==n && pos[j]!=cur) 50 { 51 cur=pos[j]; 52 k++; 53 i=j-1; 54 break; 55 } 56 else if(cnt==n) 57 { 58 if(last==-1) break; 59 cur=last; 60 i=j-2; 61 k++; 62 break; 63 } 64 } 65 } 66 } 67 } 68 cout<<k<<endl; 69 } 70 return 0; 71 }
动态规划问题 好久才ac 再看看
时间: 2024-10-09 10:15:06