您的位置:首页 > 其它

数组清空练习和游戏练习

2017-03-05 19:53 155 查看
现在有一个整数数组,其元素值均为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';
}
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: