栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c++ 按位异或计算进行状态的存储

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c++ 按位异或计算进行状态的存储

c++ 按位异或计算进行状态的存储

在有的题目中需要对状态进行记录,使用数组记录状态占用的内存空间过多,可以使用int类型的数二进制据进行记录,在判断时对每一位进行异或就好。具体操作如下:
<<为左移操作。
相关题目:464

    bool dfs(int state,int sum,int maxChoosableInteger,int desiredTotal){
        if(vis[state]==1) return true;
        if(vis[state]==2) return false;
        for(int x=1;x<=maxChoosableInteger;x++){
            if((1<<(x-1))&state) continue;//已被选过
            if(sum+x>=desiredTotal){
                vis[state]=1;
                return true;
            } 
            if(!dfs((1<<(x-1))|state,sum+x,maxChoosableInteger,desiredTotal)){
                vis[state]=1;
                return true;
            } 
        }
        vis[state]=2;
        return false;
    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/931953.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号