C

来源:互联网 发布:安卓手机数据导出 编辑:程序博客网 时间:2024/06/03 13:48

题目编号:C

题目大意:田忌赛马。输入两个数组,第一个是田忌的马的速度,第二个是齐威王的马的速度。两人赛马,田赢一局得200分,输抠200,平没分,求田忌最多的分数。

解题思路:从田的第一个开始排查对齐,遇到比齐大的,比;遇到比齐小的,用田最弱的来比,输扣200;遇到平的有这                        样几中可能:首先,比较田最慢的和齐的最慢的,如果比大,则比赢200,否则田最慢比齐这个快的慢和相当,都比,平或扣200,循环即可。虽然难理解,但漏洞很                        少,修改次数不是很多,很容易观察。

题后感想:做题还是前两天做的,一直没有时间写论文。上面有种方法是其他同学想到的,有漏洞问的我,我仔细查了才弄出来,不过思想都很不错。继续努力!

#include<iostream>#include<algorithm>using namespace std;int arr[1001],brr[1001];bool cmp(int a,int b){         return a>b;};int main(){         int s,n,a,b,c,d;         int i,j,k;         while(cin>>n&&n>0)         {                  for(i=0;i<n;i++)                  {                           cin>>arr[i];                  }                  for(i=0;i<n;i++)                  {                           cin>>brr[i];                  }                  sort(arr,arr+n,cmp);                  sort(brr,brr+n,cmp);                  s=0;                  a=c=0;                  b=d=n-1;                  for(i=0;i<n;i++)                  {                           if(arr[a]>brr[c])                           {                                    s+=200;                                    a++;                                    c++;                                    continue;                           }                           else if(arr[a]==brr[c])                           {                                    if(arr[b]>brr[d])                                    {                                             b--;                                             d--;                                             s+=200;                                             continue;                                    }                                    if(arr[b]<brr[c])                                    {                                             b--;                                             c++;                                             s-=200;                                             continue;                                    }                                    else                                    {                                             b--;                                             c++;                                             continue;                                    }                           }                           else                           {                                    b--;                                    c++;                                    s-=200;                                    continue;                           }                  }                  cout<<s<<endl;         }         return 0;}


0 0
原创粉丝点击