看了别人的博客加了个博弈那我也加一个,虽然不知道啥是博弈-_-
这题题意很容易让人(我)多想,越想越复杂、、、比如长度为7的树枝可以掰成1,6;2,5;3,4后面又咋掰咋掰,给我吓得脑瓜子嗡嗡大。然而看了题解,代码和思路又都是很简单
题意:长度为n的树枝俩人轮流掰,掰完长度还是整数, 女的先掰,谁掰最后一次谁赢。输出长度n,如果女的赢,输出名字+能让她赢某一次应该掰的段数(任意一次);如果男的赢,输出男的名字
其实我场上理解的题意并没有错,只不过太死板,没有整体地来看这个问题,别管他俩第几次怎么怎么掰,最后是不是都得把这根树枝掰成长度为1的n段?也就是说一共掰n-1次,而且是她一次,他一次,那么谁掰这第n-1次谁不就赢了吗?女的先掰,俩人轮流。谁来掰这第n-1次不是小学生问题?至于女生赢之后额外的特殊输出,那就更简单了,也是别管前面怎么掰,她最后一次掰肯定是把树枝一分为二,赢了追加输出1就完事了!
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
int n;
cin >> n;
if(!(n % 2))
printf("Alice\n1");
else
printf("Bob");
return 0;
}
所以说这题不难,我题意也没理解错,但是离解出题目差在哪呢?差在思维不够发散,没有多角度多方位去考虑,一个思路不行就怕了,就觉得题难了,有严重的畏难、夸张情绪,以后需要克服!