田继赛马 + 贪心算法

如果tian最弱的一匹马比king的最弱的一匹马强,那么tian win,

如果tian最弱的一匹马比king的最弱的一匹马弱,那么tian用这匹马与king最强的一匹马比,而相反tian用自己最强的马和king的这匹弱马相比。tian不输不赢

如果tian最弱的一匹马比king的最弱的一匹马一样,那么考虑tian和king最强的马,如果tian的最强马给力,那么在这四匹马的较量中,tian可以赢一次。如果king的最强马给力,tian的最弱马与之较量。

#include<stdio.h>



int tian[1000];

int king[1000];



int comp(const void* a, const void * b){

    return *(int *)a - *(int *)b;

}



int main(){

    int i, j, s, e, sum, n;

    while(scanf("%d", &n) != EOF && n){

        for(i = 0; i < n; i++) scanf("%d",     &tian[i]);

        for(i = 0; i < n; i++) scanf("%d", &king[i]);

        qsort(king, n, sizeof(int), comp);

        qsort(tian, n, sizeof(int), comp);

        sum = 0;

        i = s = 0; j = e = n -1;



        while(i <= j){

            if(tian[i] > king[s]){

                sum++; i++; s++;

            }else if(tian[i] < king[s]){

                sum--; i++; e--;

            }else{

                if(tian[j] > king[e]){

                    sum++; j--; e--;

                } else{

                    if(tian[i] < king[e])sum--;

                    e--; i++;

                }

            }

        }



        printf("%d\n",200 * sum);

        

    }

}
原文地址:https://www.cnblogs.com/yujinghui/p/2961675.html