怎么判断第 k 位是不是 1

判断整数 s 的第 k 位是不是 1,写法是【0】。

开始练习 →

四个元素一共多少个状态

四个元素的全部子集,用二进制表示一共有多少种?运行下面这段程序: #include <algorithm> #include <iostream> #include <string> #include &

开始练习 →

数出恰好选了两个的状态

四个元素、共 16 个状态。补全 bits_two:数出其中恰好有两位是 1 的状态有几个。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

位运算三件套

补全三个函数:has(第 k 位是不是 1,返回 0 或 1)、add(把第 k 位置成 1)、rm(把第 k 位清成 0)。用 s = 10(二进制 1010)验四样,输出「has(s,1)/has(s,2)/add(s,2)/rm(s,

开始练习 →

状压解四城最短回路

四个城市两两之间的距离已给。从 0 号出发,每个城市恰好去一次,最后回到 0 号,求最短总路程。补全 tsp:dp[s][u] 表示「走过的城市集合是 s、当前停在 u」时的最短路程。 (本题用 g++ -std=c++17 -O0 编译。

开始练习 →

状压和暴力必须算出同一个数

状压版已给出,补全全排列暴力版 tsp_brute(用 next_permutation)。跑同一组距离,输出三样:状压结果/暴力结果/是否相同(相同输出 结果一致,否则 结果不一致)。 (本题用 g++ -std=c++17 -O0 编译

开始练习 →

从暴力导出 DP 的第一步

第 1 步:结点写的是 i,c 两个参数 第 2 步:每件都分拿、不拿两条路 第 3 步:每件都分拿、不拿两条路 第 4 步:同一组参数出现了两次 第 5 步:记下来:第二次直接查表 0,4 1,4 1,3 2,4 2,3 2,3 2,2

开始练习 →

什么样的递归能导出 DP(C++)

一个递归能改成 DP,前提是【0】。

开始练习 →

暴力和记忆化各调了多少次

十件小物品、容量 8。一边纯暴力递归,一边加上记忆化。运行下面这段程序: #include <algorithm> #include <iostream> #include <string> #inclu

开始练习 →

三种写法算得一样吗

暴力、记忆化、填表三种写法,同一批物品、同一个容量。运行下面这段程序: #include <algorithm> #include <iostream> #include <string> #includ

开始练习 →