现在有一个整数数组,其元素值均为1-n范围内的某个整数,现在你和你的朋友在玩一个游戏,游戏的目的是把数组清空,你们轮流操作,你是先手,每次操作你可以删除数组中值为某个数的元素任意多个(当然数组中值为这个数的元素个数应大于等于你删除的个数,且你至少要删除一个数)。最先把数组清空的人获得胜利。假设你们都采取最优策略,请你计算你能否获得胜利。
给定一个整数数组A和元素个数n。请返回一个整数,1代表你能获胜,0代表你不能获胜。
测试样例: [1,1,1] 返回:1
class Clear {public: int getWinner(vector<int> A, int n) { // write code here map<int,int> mp; //vector<int>B; for(int i=0;i<n;i++) mp[A[i]]++; int cnt=0; for(int i=0;i<n;i++){ cnt^=mp[A[i]]; mp[A[i]]--; } return cnt!=0; }};A与B做游戏。 在一个n*m的矩阵中的出发点是(1,m),终点是(n,1),规则是只能向左移动一格,向下一格或向左下移动一格,先走到终点的为winner。 A先走。
给定两个整数n和m,请返回最后的获胜者的名字(A或B)。
测试样例: 5 3 返回:B
class Game {public: char getWinner(int n, int m) { // write code here if(n%2==1&&m%2==1){ return 'B'; }else{ return 'A'; } }};新闻热点
疑难解答