P9278 [AGM 2023 资格赛] 另一个游戏
题意理解
一道有趣而简单的博弈论题目。
给出一个正整数
思路阐述
将最后一堆留给对手,即将倒数第二堆的主动权在自己手中,想要倒数第二堆的主动权,让倒数第三堆必须被对手挪完,即倒数第三堆只剩下一个石子,从后往前推,直至第一个,所以除非第一堆只有一个石子,否则主动权将永远在先手手中,即先手胜利。
但是注意
策略:当
举个例子:
综上得出:当
代码呈现
#include <bits/stdc++.h>
using namespace std;
int n,v;
signed main(){
scanf("%d",&n);
scanf("%d",&v);//只需要第一堆的数量就可以判断了
if (n==2){//只有两堆,特判先手必胜
printf("Charlie");
return 0;
}
if (v==1) printf("Dan");//第一堆只有一个
else printf("Charlie");
return 0;
}
希望可以帮到各位大佬。