题目描述
315之前,工厂领导为了抽检自己工厂的 n(n<=10000) 件产品是否合格,对每件产品使用小写字母进行分类,专门设置了一条环形流水线,对产品进行抽检,抽检规则如下:
顺时针抽检,每次抽出第 m 个产品,抽出的产品不再参与抽检,总共抽取 k 次,请依次输出抽检的产品分类,并且输出被抽检的最多产品的分类。
输入描述
第一行为三个整数,n、m、k(int类型范围内,且 k 小于 n )
第二行为一个字符串,表示待抽检的产品
输出描述
第一行为一个字符串,表示依次被抽检的产品分类
第二行为一个字符,表示被抽检的件数最多的产品分类(最多情况不唯一请按照字母表顺序输出)
样例输入
6 1 5
a s d d w e
样例输出
a s d d w
d
运行截图
案例代码
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n, m, k;
cin >> n >> m >> k;
vector<char> products(n);
for (int i = 0; i < n; i++) {
cin >> products[i];
}
vector<char> categories;
int maxCount = 0;
vector<int> counts(26, 0); // 用于统计每个分类的数量,假设产品分类只有小写字母
int currentIndex = m - 1; // 当前抽检的产品的索引,初始为第m个产品
for (int i = 0; i < k; i++) {
char product = products[currentIndex];
categories.push_back(product);
counts[product - 'a']++;
if (counts[product - 'a'] > maxCount) {
maxCount = counts[product - 'a'];
}
currentIndex = (currentIndex + m) % n; // 更新抽检的产品的索引
}
// 输出抽检的产品分类
for (char category : categories) {
cout << category << " ";
}
cout << endl;
// 输出被抽检的最多产品的分类
for (int i = 0; i < 26; i++) {
if (counts[i] == maxCount) {
cout << (char)('a' + i) << " ";
}
}
cout << endl;
return 0;
}
该代码首先读取输入的n、m、k和待抽检的产品。然后,使用一个循环从第m个产品开始依次抽检k次,同时统计每个产品分类的数量。在抽检过程中,将抽检的产品的分类添加到一个vector中,并使用一个counts数组统计每个分类的数量。同时,记录被抽检的最多产品的分类的最大数量。
最后,分别输出抽检的产品分类和被抽检的最多产品的分类。
© 版权声明
本站资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!
THE END