题目:2016年,AlphaGo大战人类围棋职业选手,并获得了最终的胜利,引起了人们的广泛关注和思考。AlphaGo每次落子之前,通过计算,预测每一个位置落子后,最终取胜的概率。今天,我们也来玩一个游戏,来扮演一下AlphaGo的角色。现在,桌子上有一堆牌,且整齐地平放在桌面上,我们用1~13的数字表示牌面的大小。现在,有两个选手,每次轮流从这些牌的一端取一张牌,直到取完为止。最后取到的所有牌的牌面大的为胜。现在,给出一堆牌,让AlphaGo来预测输赢。
输入描述
输入数据包含两行,第一行有一个数字n,表示有n张牌,第二行有n个数字,每个数字的大小是牌面的大小。
输出描述
输出0,1,2,分别表示平局,第一个选手胜利,第二个选手胜利。
例如
输入:
3
3 4 5
输出:
1
示例代码如下:
#include < iostream >
#include < deque>
using namespace std;
int main()
{
int m_count;//牌的数量
cin >> m_count;
deque< int > deq;//双端队列
int i = 0;
while (i < m_count)
{//输入牌的排序和编号
int data;
cin >> data;
deq.push_back(data);
i++;
}
//计算得分
int ScoreA = 0;
int ScoreB = 0;
bool TurnA = true;//A先选择
while (deq.size()!=0)
{
int size = deq.size();
int first = deq.at(0);
int last = deq.at(size - 1);
if (TurnA)
{
if (first > last)
{
ScoreA += first;
deq.pop_front();
}
else
{
ScoreA += last;
deq.pop_back();
}
TurnA = false;
}
else
{
if (first > last)
{
ScoreB += first;
deq.pop_front();
}
else
{
ScoreB += last;
deq.pop_back();
}
TurnA = true;
}
}
//胜负比较
if (ScoreA > ScoreB)
{
cout << int(1) << endl;//A胜利
}
else if (ScoreA < ScoreB)
{
cout << int(2) << endl;//B胜利
}
else
{
cout << int(0) << endl;//平局
}
return 0;
}
注意:上述代码仅供参考,阿里的编程题目,没有提供在线调试功能。你写了代码以后,只能选择保存和提交。
下面是原题目:
这题目出的,“牌”写成“排”,“输出描述”下面应该是“输出”,怎么写成“输入”呢。无语了,如此不认真。