站外题求助
  • 板块学术版
  • 楼主szmetroline20
  • 当前回复0
  • 已保存回复0
  • 发布时间2020/11/3 20:00
  • 上次更新2023/11/5 09:06:21
查看原帖
站外题求助
353881
szmetroline20楼主2020/11/3 20:00

露娜想找一些好朋友,于是她来到了兰德索尔,而且她发现这里居然有人和她同名 (xcw),露娜认为,和她名字相同或者高度相似的人都能成为她的朋友,现在她想知道,她最多能和几个人成为朋友呢?

我们认为,两个人的名字高度相似当且仅当他们的长度差为 11,并且较长的名字删除一个字符后会变成较短的名字。

输入格式 第一行,一个字符串 SS,表示露娜在兰德索尔的名字。

第二行,一个正整数 mm,分别表示兰德索尔的人数。

接下来 mm 行,每行一个字符串,代表一个人的名字。

输出格式 输出一行,一个数,表示有多少人可以和露娜成为朋友。

#include <bits/stdc++.h>
using namespace std;
int main() {
    freopen("illusion.in", "r", stdin);
    freopen("illusion.out", "w", stdout);
    string s;
    cin >> s;
    string ss;
    int cnt;
    cin >> cnt;
    cnt = 0;
    while (cin >> ss) {
        if (ss == s) {
            cnt++;
            continue;
        }
        if (abs(ss.size() - s.size()) > 1 || ss.size() == s.size()) continue;
        if (s.size() > ss.size())
            for (int i = 0; i < s.size(); i++)
                if (s.substr(0, i) + s.substr(i + 1, s.size() - i - 1) == ss) {
                    cnt++;
                    break;
                }
        if (s.size() < ss.size())
            for (int i = 0; i < ss.size(); i++)
                if (ss.substr(0, i) + ss.substr(i + 1, ss.size() - i - 1) == s) {
                    cnt++;
                    break;
                }
    }
    cout << cnt << endl;
    return 0;
}
2020/11/3 20:00
加载中...