标签: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