求助站外题(not NOIOnline
  • 板块灌水区
  • 楼主_2028_
  • 当前回复1
  • 已保存回复1
  • 发布时间2022/3/26 11:30
  • 上次更新2023/10/28 05:38:13
查看原帖
求助站外题(not NOIOnline
505229
_2028_楼主2022/3/26 11:30

有两个仅包含小写字母的字符串 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;
}
2022/3/26 11:30
加载中...