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*/