首页 > 编程语言 >Problem P25. [算法课回溯]找出所有子集的异或总和再求和

Problem P25. [算法课回溯]找出所有子集的异或总和再求和

时间:2022-10-11 14:13:15浏览次数:55  
标签:idx nums int dfs P25 异或 ret Problem include

简单的一道回溯题,具体解法看代码,有注释

#include<iostream>
#include<bits/stdc++.h>
#include<cstdio>
#include<string>

using namespace std;

int ret = 0;

void dfs(vector<int>& nums, int xorsum, int idx) {
    // 递归结束条件
    if (idx == nums.size()){
        ret += xorsum;
        return;
    }
    // 子集包含该元素
    dfs(nums, xorsum^nums[idx], idx+1);
    // 子集不包含该元素
    dfs(nums, xorsum, idx+1);
}

int main()
{
    vector<int> nums;
    int k;
    while (1){
        int d;
        int ret = scanf("%d", &d);
        if (ret == EOF){
            break;
        }
        nums.push_back(d);
    }
    dfs(nums, 0, 0);
    cout << ret << endl;
    return 0;
}

标签:idx,nums,int,dfs,P25,异或,ret,Problem,include
From: https://www.cnblogs.com/understanding-friends/p/16779022.html

相关文章

  • HDU 5373 The shortest problem(判断一个数能否被11整除)
    题目地址;​​点击打开链接​​思路:参考队友的代码写的,资料地址:​​点击打开链接​​ 怎样判断一个数能不能被11整除?判断一个数能不能被11整除与判断一个数能不能被......
  • Problem P32. [算法课分支限界法]Partition to K Equal Sum Subsets
    纯暴力遍历+剪枝,将任务看出有k个桶,要将每个桶都刚刚好装满。#include<iostream>#include<bits/stdc++.h>#include<cstdio>#include<string>usingnamespacestd;......
  • Bob's Problem - trees, greedy
    Bobwasintrouble.Herubbedthemagicringonhisfinger,andyoucameoutoftheground.Youaregivenanundirectedgraph GG whichcontains nn vertices......
  • 竞赛-6201. 找出前缀异或的原始数组
    参加竞赛的一道题中等难度给你一个长度为n的整数数组pref。找出并返回满足下述条件且长度为n的数组arr:pref[i]=arr[0]^arr[1]^...^arr[i].注意^表示......
  • 2020辽宁省赛 xor(前缀和DP 异或性质)
    2020辽宁省赛xor题意:​ 现在有一个长度为n的数组a。现在要将a拆分成若干个连续的子数组,要求每个连续的数组异或和都为x。请问有多少种拆分的方案。思路:​ 容易推出转......
  • SPOJ6059 GCDSQF Another GCD Problem 题解
    题目大意给定两个square-freenumber\(A\)和\(B\)(即没有一个素因子的次数达到\(2\)的数)的01表示形式(即将其有无该素因子排列出来,如\(105=3\times5\times7\),则......
  • 【CF1580F】Problems for Codeforces
    【CF1580F】ProblemsforCodeforcesDescription给出\(n,m\)求满足条件的序列\(a\)个数:\(a_i+a_{i+1}<m,a_1+a_n<m\)模\(998244353\)Input一行两个数\(n,m\)Output......
  • 异或方程组高斯消元模板
    inlinevoidsolve(intn){for(inti=1,top=1;i<=n;i++,top++){intcur=0;for(intj=top;j<=n;j++)if(m......
  • java 算法——异或运算练习
    packageclass01;//在一个数组中已知数组中只有一种数出现了奇数次,其他的是所有数都出现了偶数次怎么找到出现奇数次的数对所有数字取异或最终结果就是奇数次那个数......
  • [AGC041D] Problem Scores
    StOKubic神发现主要限制在第三个限制,考虑变形一下限制要求,问题转化为要求序列的\(k=\lfloor\dfrac{n}{2}\rfloor\),的前\(k+1\)项的和,大于后\(k\)项的和。动......