标签:letters nbsp ide sid 题目 following lmos nice 0ms
| Time Limit: 1000MS | Memory Limit: 10000K | |
| Total Submissions: 4074 | Accepted: 2077 |
Description
CAPILLARY
MARSUPIAL
CAPILLARY
MARSUPIAL
Input
Output
Sample Input
CAR CART TURKEY CHICKEN MONEY POVERTY ROUGH PESKY A A -1
Sample Output
appx(CAR,CART) = 6/7 appx(TURKEY,CHICKEN) = 4/13 appx(MONEY,POVERTY) = 1/3 appx(ROUGH,PESKY) = 0 appx(A,A) = 1
字符匹配问题:
按着题目要求写就好了
记住要相反方向进行两次求值
#include<iostream>
#include<string>
using namespace std;
int appx(string& word1,string&word2)
{
int count = 0;
int max = 0;
int length1 = word1.length();
int length2 = word2.length();
for (int i = 0; i<length1; i++)
{
count = 0;
for (int j = 0; j<length2&&i + j<length1; j++)
{
if (word1[i + j] == word2[j])
count++;
}
if (max<count)
max=count;
}
return max;
}
int main()
{
string word1;
string word2;
while (cin >> word1&&word1 != "-1")
{
cin >> word2;
int len1 = word1.length();
int len2 = word2.length();
int app1 = appx(word1,word2);
int app2 = appx(word2,word1);
if (app1<app2)app1 = app2;
cout << "appx(";
for (int i = 0; i<len1; i++)
cout << word1[i];
cout << ",";
for (int i = 0; i<len2; i++)
cout << word2[i];
cout << ") = ";
if (app1 == 0)cout << 0 << endl;
else
{
len1 += len2;
app1 *= 2;
for (int i = 2; i <= ((len1<app1) ? len1 : app1); i++)
while (app1%i == 0 && len1%i == 0)
{
app1 /= i;
len1 /= i;
}
if (app1%len1 != 0)
cout << app1 << ‘/‘ << len1 << endl;
else
cout << app1 / len1 << endl;
}
}
return 0;
}
标签:letters nbsp ide sid 题目 following lmos nice 0ms
原文地址:http://www.cnblogs.com/KennyRom/p/6018013.html