数组清空练习和游戏练习

现在有一个整数数组,其元素值均为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';
        }
    }
};
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值