top1编程
← 返回题目
题解

删除试题

1 条题解

  • 0
    @ 2026-8-5 1:11:26

    解题思路

    读入 n 道题的难度,再读入要删除的难度 x。

    把 n 道题依次检查一遍:难度等于 x 的题目跳过不输出,其余的正常输出。

    输出时注意空格格式:题目要求输出的一行数字之间用一个空格隔开。可以用一个 bool 变量 first 来帮忙——第一个输出的数字前面不加空格,之后的每个数字前面先输出一个空格。

    参考代码

    // P4489 删除试题:把难度为x的试题删掉,输出剩下的试题难度
    #include <iostream>
    using namespace std;
    
    int a[1005];   // 存储每道题的难度
    
    int main() {
        int n;
        cin >> n;
        for (int i = 0; i < n; i++) cin >> a[i];   // 读入n道题的难度
        int x;
        cin >> x;   // 要删除的难度
    
        bool first = true;   // 控制空格:第一个输出的数前面不加空格
        for (int i = 0; i < n; i++) {
            if (a[i] == x) continue;   // 难度等于x,跳过不输出
            if (!first) cout << " ";   // 不是第一个数,前面加空格
            cout << a[i];
            first = false;
        }
        cout << endl;
        return 0;
    }
    

    复杂度分析

    只需要把 n 道题从前到后遍历一遍,时间复杂度 O(n),用一个数组存难度,额外空间 O(n)。

    • 1