杭电oj——田忌赛马(个人思路C++源代码)

心血来潮,凭着感觉写下来的一个简单代码,昨天在杭电oj浏览题目时偶然看到的,感觉比较有趣(不是小学语文课本里的故事吗?于是我想对其进行求解,哈哈,代码简单还存在诸多优化的地方,请大家多多指教)

#include <iostream>
using namespace std;

class tianji    //创建一个tianji类,以便使得void main()里面的代码更加清晰和整洁
{
public:
void sort(int *a,int n)    //先进行排序,以便对后续的求赢的次数统计
{
for(int i=1;i<=n;i++)
   {
     for(int j=i+1;j<=n;j++)
     {
       if(a[i]<a[j])
       {
        int temp=a[i];
         a[i]=a[j];
         a[j]=temp;
       }
     }
   }
   cout<<"排序后数组从大到小为:"<<endl;
   for(i=1;i<=n;i++)
   {
     cout<<a[i]<<" ";
   }
    cout<<endl;
    }
int countD(int a[],int b[],int n)    //统计田忌净赢场数
{
   int count=0;
     for(int w=0,v=0;w<n,v<n;)
      {
        if(a[w]>b[v]||a[w]==b[v])
        {
            count++;
            ++w;
            ++v;
        }
         if(a[w]<b[v])
        {
            count--;
            w=w+0;
            ++v;
        }
     }
        return count;
}

};

void main()
{
    
    int n,lun;
    cin>>lun;
    while(lun--)  //进行多少次循环
    {
    cout<<"请输入一共要进行多少次赛马:"<<endl;
    cin>>n;  //每次循环下进行多少场赛马
    int a[1000],b[1000];
    for(int u=1;u<=n;u++)
    {
        cin>>a[u];
    }
    for(int r=1;r<=n;r++)
    {
        cin>>b[r];
    }
    tianji sm;   //创建一个对象
    sm.sort(a,n);  //排序
    sm.sort(b,n);
    y=sm.countD(a,b,n)*200; //赢输一场200块,并得到最终的报酬
    cout<<"田忌赛马所最终的报酬为:"<<y<<endl;
    }
}

杭电oj——田忌赛马(个人思路C++源代码)