貪心算法 田忌賽馬(problem C)

題意:這是田忌賽馬的故事,首先可以將田忌和國王的馬的速度從快到慢排列,然後進行比較。每比一次兩邊各減去一匹馬,用四個標記分別標記田忌和國王的最快、最慢馬。先比較他們最快的馬,若相等,再比較最慢的馬,考慮一下條件和其他因素就可以了。


#include"stdio.h"

#include"algorithm"
using namespace std;
const int N=1010;
int tian[N];
int king[N];
int cmp(int a,int b)
{
    return a>b;
}
int main()
{
    int n,i;
    while(scanf("%d",&n)&&n)
    {
        for(i=0;i<n;i++)
            scanf("%d",&tian[i]);
        for(i=0;i<n;i++)
            scanf("%d",&king[i]);
        sort(tian,tian+n,cmp);
        sort(king,king+n,cmp);
        int tfirst=0,kfirst=0,tlast=n-1,klast=n-1;
        int counta=0;
        for(i=0;i<n;i++)
        {
            if(tian[tfirst]>king[kfirst])
            {
                tfirst++;
                kfirst++;
                counta++;
            }
            else if(tian[tfirst]<king[kfirst])
            {
                tlast--;
                kfirst++;
                counta--;
            }
            else
            {
                if(tian[tlast]>king[klast])
                {
                    tlast--;
                    klast--;
                    counta++;
                }
                else if(tian[tlast]<king[klast])
                {
                    tlast--;
                    kfirst++;
                    counta--;
                }
                else
                {
                    if(tian[tlast]<king[kfirst])
                    {
                        tlast--;
                        kfirst++;
                        counta--;
                    }
                }
            }
        }
        printf("%d\n",counta*200);
    }
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章