题意:
有n张卡片,每张卡片上有不同的数字,Sereja和Dima从两侧取卡片,每次尽量取大的,求两人最后分别得到的和。贪心,或者模拟一下这个过程,需要注意的是:当n=1时,这个要单独考虑,由于没考虑这个,错了一次。下边的是我的代码。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int inf = 0x3f3f3f3f;
const int N=1005;
int a[N];
int main()
{
//freopen("shuju.txt","r",stdin);
int n;
cin>>n;
for (int i=1;i<=n;i++)
{
cin>>a[i];
}
int left=1,right=n;
int sum1=0,sum2=0;
if(n==1)
{
cout<<a[1]<<" 0"<<endl;
return 0;
}
while(1)//两人轮流取
{
if(a[left]>a[right])//第一个人
{
sum1+=a[left];
left++;
}
else
{
sum1+=a[right];
right--;
}
if(left==right)//这是最后一个值,别落了,这个值可能第二个人拿
{
sum2+=a[left];
break;
}
if(a[left]>a[right])//第二个人
{
sum2+=a[left];
left++;
}
else
{
sum2+=a[right];
right--;
}
if(left==right)//这是最后一个值,别落了,这个值可能第一个人拿
{
sum1+=a[left];
break;
}
}
cout<<sum1<<" "<<sum2<<endl;
return 0;
}