关于#c++#的问题:电影院推出了一个活动:一个身高为 x 的人可以和身高至少为 2x 组合,两人一共只需买一张票

n 个人去看电影,本来每人要买一张票,但电影院推出了一个活动:一个身高为 x 的人可以和身高至少为 2x 组合,两人一共只需买一张票。现在给出全体 n 个人的身高,请问总共至少要买多少电影票?

代码如下:

#include <iostream>
using namespace std;
int main()
{
    int i,j,n,t;
    int *p = 0;
    int cnt ;
    cout << "请输入人数:";
    cin >> n;
    cnt = n;
    cout << "请输入"<<n<<"个人的身高:";
    p = new int[n];
    for(i=0;i<n;i++)
        cin >> p[i];
    //排序
    for (i=0;i<n-1;i++)
    {
        for (j=0;j<n-1-i;j++)
        {
            if(p[j] > p[j+1])
            {
                t = p[j];
                p[j]=p[j+1];
                p[j+1]=t;
            }
        }
    }
    //从最矮的开始匹配
    for (i=0;i<n;i++)
    {
        for(j=1;j<n;j++)
        {
            if(p[j] >= 2*p[i])
            {
                cnt--; //所需的票减去1张
                break;
            }
        }
    }
    cout << "所需票数:"<< cnt<<endl;
    return 0;
}

按身高由低到高排好序,从最矮的开始找其身高两倍及以上的人,找到其中最矮的。以此类推,直到找不到两倍以上的人为止。统计找到了多少个,总人数减去个数就是需要的电影票数