相比数据结构的题。。感觉这种想啊想的题可爱多了~~~代码量还少。。。。
题目链接:
题意:
一圈n个硬币,两人轮流从中取一或两个硬币,(只能取相邻的两枚硬币),取完的获胜,问谁赢?
分析:
这里注意,连续的硬币中取出若干个后,被分割开的就不算连续的硬币了。
首先还是找是否存在对称状态,只要是存在对称状态,后手模仿先手,最后后手必赢。 假设先手第一次拿走了1或者2个硬币,圈被分裂成一条链,后手在链的中间部位拿走1或者2个硬币,将链分为两条对称的子链,这样便出现对称状态了。后手必赢! 但是注意一次是最多可以取2个硬币的,所以在硬币数小于等于2时,先手赢。代码:
#includeusing namespace std;int main (void){ int n; while(cin>>n && n){ if(n <= 2) cout<<"Alice"<
这类游戏就是要找对称状态,然后完全模仿对手,最终必赢!