社区讨论

站外题求助

学术版参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@lod0mcsz
此快照首次捕获于
2023/10/30 22:48
2 年前
此快照最后确认于
2023/11/05 09:06
2 年前
查看原帖
露娜想找一些好朋友,于是她来到了兰德索尔,而且她发现这里居然有人和她同名 (xcw),露娜认为,和她名字相同或者高度相似的人都能成为她的朋友,现在她想知道,她最多能和几个人成为朋友呢?
我们认为,两个人的名字高度相似当且仅当他们的长度差为 11,并且较长的名字删除一个字符后会变成较短的名字。
输入格式 第一行,一个字符串 SS,表示露娜在兰德索尔的名字。
第二行,一个正整数 mm,分别表示兰德索尔的人数。
接下来 mm 行,每行一个字符串,代表一个人的名字。
输出格式 输出一行,一个数,表示有多少人可以和露娜成为朋友。
CPP
#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;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...