编写C++程序抽检自己工厂的n (n<=10000)件产品是否合格问题案例代码

题目描述

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

运行截图

图片[1]-编写C++程序抽检自己工厂的n (n-QQ沐编程

案例代码

#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
喜欢就支持一下吧
点赞10赞赏 分享