其他分享
首页 > 其他分享> > 田忌赛马

田忌赛马

作者:互联网

http://acm.hdu.edu.cn/game/entry/problem/show.php?chapterid=1§ionid=3&problemid=4

//贪心算法
//据题目要求,有三种可能:1.上等马和上等马比,2.下等马和下等马比,3. 下等马和上等马比较
//选出最有利于田忌的一种情况
//每次比较完毕,指针后移或前移,表示已经比较过了,并统计胜负(sum)
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=1010;
int T[maxn];
int Q[maxn];
bool cmp(int a,int b)
{
    return a>b;
}
int main()
{
    int n;
    while(cin>>n,n)
    {
        int sum=0;
        for(int i=0;i<n;i++)
        {
            cin>>T[i];
        }
        for(int i=0;i<n;i++)
        {
            cin>>Q[i];
        }
        sort(T,T+n,cmp);//贪心老规矩先排序
        sort(Q,Q+n,cmp);
        //指针初始化
        int qf=0,tf=0;
        int qe=n-1,te=n-1;
        while(n--)//n匹马,比较n次
        {
            if(T[tf]>Q[qf])//上等马和上等马
        {
            tf++;
            qf++;
            sum++;
        }
        else if(T[te]>Q[qe])//下等马和下等马
        {
            te--;
            qe--;
            sum++;
        }
        else if(T[te]<Q[qf])//下等马和上等马
        {
            te--;
            qf++;
            sum--;
        }
        }

        cout<<sum*200<<endl;
    }
    return 0;
}

 

标签:田忌赛马,int,sum,++,maxn,qf,te
来源: https://www.cnblogs.com/inawaken/p/16323879.html