1267.-可口可乐

22大数据武浩 2023-01-28 10:37:36

描述


这天小F来到超市,准备买瓶可乐解渴。

货架上有N瓶可乐,每瓶可乐的净含量可能不同。

现在超市推出“可乐买一送一”活动:买一瓶可乐就可以再免费选一瓶可乐,但是免费送的这瓶可乐的净含量不能多于买的这瓶的净含量。

小F只打算花钱买最多一瓶可乐,小F想知道他最多能喝到多少可乐(以净含量为单位)


输入


第一行一个正整数T,表示数据组数。

对于每组测试数据,第一行一个正整数N表示有N瓶可乐。

接下来一行包含N个正整数ai,分别代表第i个可乐的净含量。

数据范围:

T<=1000

1<=N<=100

1<=ai<=1e9


输出


对于每组测试数据,输出一个整数,整数为最多能喝到的可乐(以净含量为单位)。每组数据独占一行。


样例



题解

这道题有两种做题思路。

第一种

就是找最大值;你先找到一组数列中的最大值,然后将这个最大值放在另一个数组中,接着再找剩余数的最大值,同理放在另一个新数组中。最后将两个数组中第一个数进行相加就可以了。例如一组数中7为最大值,6为第二大值,那么就将7放入a[101]数组中,将6放入b[101]数组中,最后a[0]+b[0]就可以了。

第二种

通过冒泡法进行排序,从小到大排,然后将最后两组数相加就可以了。

我这里用的是冒泡法解决的,如果对冒泡法不懂得,可以尝试使用第一种方法做。

AC

#include <iostream>

using namespace std;

int main()
{
    int T;
    cin>>T;
    while(T--)
    {
        int n,i,j,b,a[101];
        cin>>n;
        for(i=0;i<n;i++)
            cin>>a[i];
    for(j=1;j<n;j++)//冒泡法
    for(i=0;i<n-j;i++)
    if(a[i]>a[i+1])
{
    b=a[i];
    a[i]=a[i+1];
    a[i+1]=b;
}
cout<<a[n-1]+a[n-2]<<endl;

    }
    return 0;
}

 

 

...全文
154 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

153

社区成员

发帖
与我相关
我的任务
社区管理员
  • c_university_364
  • 焚冉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧