当前位置: 代码迷 >> 综合 >> 寒假训练——热身--- 贪心——田忌赛马
  详细解决方案

寒假训练——热身--- 贪心——田忌赛马

热度:58   发布时间:2023-12-06 06:11:10.0

题目 

 

代码 

#include <iostream>
#include <stdio.h>
#include <math.h>
#include <algorithm>
using namespace std;int main()
{int n,tj[1005],qw[1005],i,sum=0;cin >>n;for(i=0;i<n;i++)cin >>tj[i];for(i=0;i<n;i++)cin >>qw[i];sort(tj,tj+n);sort(qw,qw+n);//先将田忌和齐王的马按速度分别从小到大排列int tjk,qwk,tjm,qwm;tjk=qwk=n-1;//因为马数一样所以最快的在n-1位置tjm=qwm=0;//最慢while(tjm<=tjk)//因为要算田忌赢得次数,当慢马的下标大于快马时说明已经没马了{if(tj[tjk]>qw[qwk])//田忌快马比齐王快马快,就让快马比{sum++;tjk--,qwk--;}else if(tj[tjk]<qw[qwk])//田忌快马比齐王快马慢,就让慢马比{tjm++,qwk--;}else//快马一样时{if(tj[tjm]>qw[qwm])//田忌慢马比齐王慢马快,让慢马比sum++,tjm++,qwm++;else//否则就让慢马与快马比tjm++,qwk--;}}cout  << sum <<endl;return 0;
}