题目大意:
田忌赛马。。。。若干匹马与国王的马比赛,每有一匹马大于国王的速度,赢得200,否则输200,速度相同不计,输入n为马的数目,0为结束
解题思路:
先排序,将两个速度最快的比较,如果大于国王,m++,如果小于,将最慢的与国王最快的比较,m--。如果等于,将两个最慢的比较,如果大于国王最慢的,m++,如果小于,与国王最快的比较m--,如果等于,将最慢的与国王最快的比较,m--;
代码:
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int n,i,m=0,a[1001],b[1001];
while(cin>>n)
{
if(n==0)
return 0;
for(i=0;i<n;i++)
cin>>a[i];
for(i=0;i<n;i++)
cin>>b[i];
sort(a,a+n);
sort(b,b+n);
int l1=0,l2=0;int h1=n-1,h2=n-1;
for(i=0;i<n;i++)
{
if(a[h1]>b[h2])
{
m++;
h1--;
h2--;
continue;
}
if(a[h1]<b[h2])
{
m--;
h2--;
l1++;
continue;
}
if(a[h1]==b[h2])
{
if(a[l1]<b[l2])
{
l1++;
h2--;
m--;
continue;
}
if(a[l1]>b[l2])
{
l1++;
l2++;
m++;
continue;
}
if(a[l1]==b[l2])
{
if(a[l1]<b[h2])
{
m--;
h2--;
l1++;
}
}
}
}
cout<<m*200<<endl;
m=0;
}
return 0;
}
来源:https://www.cnblogs.com/Sikaozhe/p/5320214.html