您的位置:首页 > 其它

poj 1580 String Matching

2012-06-07 01:43 260 查看
//注意:要读懂题意:不是随便地从两个字符串中找出相同的字符就可以,而是在字符串进行逐个逐个比较的过程中找出!
#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 CART
TURKEY CHICKEN
MONEY POVERTY
ROUGH PESKY
A A
MEET EAT
HAPPY PLAY
-1
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: