【CSDN 每日一练】套盒子 测试通过率10%

题目

img

代码

#include <iostream>
#include <algorithm>
#include <string.h>
#define Maxsize 10010
using namespace std;
bool cmp(int a, int b)
{
    return a > b;
}

int main()
{
    int n;
    cin >> n;
    int size[Maxsize];
    int body[Maxsize] = { 0 };
    for (int i = 0; i < n; i++) {
        cin >> size[i];
    }
    int res = 0, size_temp = 0, box = 0; //最终盒子数,当前嵌套的盒子大小,已处理的盒子数
    sort(size, size + n, cmp);
    while (box < n) {
        size_temp = 0;
        for (int i = 0; i < n; i++) {
            if (size_temp == 0 && body[i] == 0) { //该嵌套盒是否是最外层盒子
                box++;
                size_temp = size[i];
                body[i] = 1;
            }
            else if (size[i] < size_temp && body[i] == 0) {
                box++;
                size_temp = size[i];
                body[i] = 1;
            }
        }
        res++;
    }
    cout << res << endl;
    return 0;
}

问题
测试通过率太低了,不知道什么方面没有考虑到。

重新整理一下之前思路是对的,逻辑顺序调整了一下。

img