POJ 1580 String Matching G++
阿新 • • 發佈:2018-11-04
#include <iostream> #include <string> using namespace std; int main() { while(1) { string a,b; cin>>a; if(a=="-1") { break; } cin>>b; int max=0; for(int i=0;i<a.size();i++) { int js=0; for(int k=i,j=0;((k<a.size())&&(j<b.size()));k++,j++) { if(a[k]==b[j]) { js++; } } if(js>max) { max=js; } } for(int i=0;i<b.size();i++) { int js=0; for(int k=0,j=i;((k<a.size())&&(j<b.size()));k++,j++) { if(a[k]==b[j]) { js++; } } if(js>max) { max=js; } } int chu=0; for(int i=(a.size()+b.size());i>0;i--) { if(((a.size()+b.size())%i==0)&&((max*2)%i==0)) { chu=i; break; } } cout<<"appx("<<a<<","<<b<<") = "; if(max==0) { cout<<0<<endl; }else if(max*2==(a.size()+b.size())) { cout<<1<<endl; }else if(chu!=0) { cout<<max*2/chu<<"/"<<(a.size()+b.size())/chu<<endl; }else { cout<<max*2<<"/"<<a.size()+b.size()<<endl; } } return 0; }