#881. AI检索
AI检索
AI检索
题目描述
请你实现一个简单的AI数据检索系统。系统会接收用户输入的数据和关键词,然后根据关键词在数据中的匹配程度进行排序输出。
输入格式:
- 第一行:两个部分,第一个整数表示数据数量n,第二个字符串表示关键词
- 接下来n行:每行一个字符串,表示一条数据
输出格式:
- 按匹配程度从高到低输出包含关键词的数据
- 不包含关键词的数据不输出
- 每条数据占一行
匹配规则:
- 基础匹配:数据中包含关键词得10分
- 位置加分:关键词出现在数据开头得5分
- 频率加分:关键词每多出现一次得2分
示例:
输入:
3 你
"你"是一个汉字
1234567
你我他,一年级课文
输出:
你我他,一年级课文
"你"是一个汉字
解释:
- "你我他,一年级课文":包含关键词"你"(10分)+ 开头位置(5分)= 15分
- ""你"是一个汉字":包含关键词"你"(10分)= 10分
- "1234567":不包含关键词,不输出
要求
请根据上述描述,补全以下代码框架:
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
struct DataItem {
string content;
int matchScore;
};
// 计算匹配分数
int calculateMatchScore(const string& content, const string& keyword) {
// 请在此实现匹配评分逻辑
}
// 比较函数,用于排序
bool compareByScore(const DataItem& a, const DataItem& b) {
// 请在此实现比较逻辑
}
int main() {
int dataCount;
string keyword;
cin >> dataCount >> keyword;
cin.ignore();
vector<DataItem> dataList;
// 读取和处理数据
for (int i = 0; i < dataCount; i++) {
DataItem item;
getline(cin, item.content);
// 计算匹配分数并筛选数据
// 请补充代码
}
// 排序数据
// 请补充代码
// 输出结果
// 请补充代码
return 0;
}
提示
- 基础实现:完成上述代码框架
- 进阶功能:添加对大小写不敏感的匹配(如关键词"hello"也能匹配"Hello")
- 扩展功能:支持多个关键词的检索(用空格分隔)
注意:请确保代码在C++98标准及以上标准能够编译运行。