游戏
时间: 1ms 内存:128M
描述:
两个玩家玩游戏。最初有n个整数 {a1,a2,,an} ,每轮一个玩家选择一个数字并从中删除,这一直持续到只剩下一个数字。第一个玩家希望留下的最后一个数字最小化,而第二个玩家想要最大化。你想知道在n–1次之后留下什么数字。
输入:
第一行包含一个整数 n(1<=n <=1000)。
第二行包含n个整数。
输出:
输出留下的一个数字
示例输入:
3
2 2 2
示例输出:
2
提示:
参考答案(内存最优[1120]):
#include<stdio.h>
int main()
{
int i,j,m,n,t;
int a[10000];
scanf("%d",&i);
for(j=1;j<=i;j++)
scanf("%d",&a[j]);
for(m=0;m<=i;m++)
for(n=1;n<=i-1-m;n++)
if(a[n]>a[n+1])
{
t=a[n];
a[n]=a[n+1];
a[n+1]=t;
}
n=i;
if((i+1)%2==0)
printf("%d",a[(n+1)/2]);
else
printf("%d",a[n/2]);
}
参考答案(时间最优[2]):
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int n;
int arr[1005];
cin >>n;
for(int i=0;i<n;i++)
cin >>arr[i];
sort(arr,arr+n);
if(n%2==0)
cout <<arr[n/2-1]<<endl;
else
cout <<arr[n/2]<<endl;
return 0;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。