poj 1580 String Matching

来源:互联网 发布:网络协议与分析 编辑:程序博客网 时间:2024/06/02 21:44
//注意:要读懂题意:不是随便地从两个字符串中找出相同的字符就可以,而是在字符串进行逐个逐个比较的过程中找出! #include <iostream>#include <string>#include <algorithm>using namespace std;int gcd(int a, int b){    while (b%a)    {          int t = a;          a = b % a;          b = t;    }    return a;}int main(){    int i, j, k, len1, len2, common, slen, max;    string str1, str2, tmp;    while (cin >> str1)    {          if (str1 == "-1")  break;          common = 0;          cin >> str2;          tmp = str2;          len1 = str1.length();          len2 = str2.length();            for (i = 0; i < len1; ++ i)             {        for (j = 0; j < len2; ++ j)                 {          max = 0;        for (int i1 = i, j1 = j; i1 < len1 && j1 < len2; ++ i1, ++ j1)        if (str1[i1] == str2[j1])         ++ max;        if (common < max)         common = max;        }        }                  slen = len1 + len2;          if (common == 0)              cout << "appx(" << str1 << "," << tmp << ") = " << 0 << endl;          else          {              int num = gcd(common*2, slen);              if (slen == common*2)                  cout << "appx(" << str1 << "," << tmp << ") = " << 1 << endl;               else                  cout << "appx(" << str1 << "," << tmp << ") = " << common*2/num << "/" << slen/num << endl;          }    }        system("pause");} /*CAR CARTTURKEY CHICKENMONEY POVERTYROUGH PESKYA AMEET EATHAPPY PLAY-1*/

原创粉丝点击