栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

贪心算法求解下列问题

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

贪心算法求解下列问题

某体育比赛在甲乙两队中进行,两队参赛的人数相同,要求所有队员必须参赛且只能参加一次比赛。每次比赛,甲乙双方各派出一人与对方进行比赛,总胜出人数最多的队将获得比赛最终的胜利。为了取得比赛的胜利,教练在比赛前需要进行相应的排兵布阵。教练在排兵布阵时,往往会参考双方队员以往的成绩,并给出一个综合性的评分,如果某队队员相比另一队队员的评分高,则获胜的机率就越高。

输入要求:输入的第一行包含一个整数n,表示甲乙双方出场的总人数。其后的2行,每行包含n个整数,分别表示甲乙两队各个队员的评分成绩。

输出要求:输出一个整数k,表示甲队最大可能赢得的场次。

样例输入:

3

92 83 71

95 87 74

样例输出:

2

 题目要求使用贪心算法,首先明确某队要赢的必要条件,即当甲队要求胜利时,乙队评分最高与甲队评分最低对打;甲队评分最高与乙队评分次高对打。只要保证这两个条件,甲队就能胜利。具体代码实现如下:

1.(时间复杂度较高)

#include
using namespace std;
#define Maxsize 999
int A[Maxsize];//甲队平均成绩
int B[Maxsize];//乙队平均成绩
int ans=0;
int n;
int flag = 0;
void quickSort(int* arr, int begin, int end)
{
        if (begin < end)
{
          int temp = arr[begin]; //将区间的第一个数作为基准数
int i = begin; //从左到右进行查找时的“指针”,指示当前左位置
int j = end; //从右到左进行查找时的“指针”,指示当前右位置
while (i < j)
{
while (i temp)
j--;
arr[i] = arr[j];
while (i < j && arr[i] <= temp)
i++;
arr[j] = arr[i];
}
arr[i] = temp;
quickSort(arr, begin, i - 1);
quickSort(arr, i + 1, end);
}
else
return;
}
int Max(int a[])
{
int b=0;
int max = a[0];
for (int i = 0;i < n;i++)
if (max < a[i])
{
max = a[i];
b = i;
}
return b;
}
int Min(int a[])
{
int b=0;
int min = a[0];
for (int i = 0;i < n;i++)
if (min > a[i])
{
min = a[i];
b = i;
}
return b;

}
void Find()
{
for (int j = n - 1;j >= 0;j--)
{
        for (int i = 0;i < n;i++)
{
if (flag == 0)
{
int k = Min(A);
if (A[k] < B[j])
{
A[k] = 0;
B[j] = 0;
flag = 1;
break;
}
}
else if (flag == 1)
{
int h = Max(A);
if (A[h] > B[j])
{
        ans++;
        A[h] = 0;
        B[j] = 0;
        flag += 1;
        break;
}
}
else if (flag == 2)
{
if (A[i] != 0 && B[j] != 0)
{
        if (B[j] < A[i])
        {
                A[i] = 0;
                B[j] = 0;
                ans++;
}
}
}
}
}
}
int main()
{
        cin >> n;
for (int i = 0;i < n;i++)
{
        cin >> A[i];
}
for (int i = 0;i < n;i++)
{
        cin >> B[i];
}
quickSort(B, 0, n - 1);
Find();
cout << ans;
return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/929051.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号