有两个仅包含小写字母的字符串 a,b ,将字符串 a 的所有字符任意打乱并重新拼接。
如果字符串 a可以重新拼接得到一个与字符串 b 完全一致的字符串(或拼接后字符串 a 的某个子串与字符串b完全一致),这是完美的,输出 "Nice"; 如果字符串 a可以重新拼接得到与字符串 b 相似度大于 x% 的字符串(或其子串与字符串 b 相似度大于 x% ),输出最大可能的相似度;否则,输出 "No"。对相似度的定义是:如果字符串 a 无法拼接得到与字符串 b 完全一致的,那么就通过拼接得到一个最长的公共子串,而相似度就是最长公共子串长度 / 字符串 b 的长度。
#include<bits/stdc++.h>//WA代码,求挑错
using namespace std;
char s[105],t[105];
int cs[26],ct[26];
int main()
{
int x;
cin >> x >> s >> t;
int ls = strlen(s),lt = strlen(t);
for(int i = 0;i < ls;i++) cs[s[i] - 'a']++;
for(int i = 0;i < lt;i++) ct[t[i] - 'a']++;
int sum = 0;
for(int i = 0;i < 26;i++)
{
if(cs[i] >= ct[i]) sum += ct[i];
else sum += cs[i];
}
double now = 1.0 * sum / lt * 100;
if(now == 100) cout << "Nice!";
else if(now >= x) printf("%.2lf%%",now);
else cout << "No";
return 0;
}