有 5 种硬币,他们面值分别为:1,2, 3, 4, 5,请列出所有面值组合。比如如果选出面值为 1、3、4 的硬币,则输出 1 3 4 这似乎就是在有 N 个元素的集合里求不同的子集,而又有 又二项式定理得: 回到题目中,不妨用二进制位 1 来表示集合 set 中被选中的元素,0 表示集合 set 中没被选中的元素,那么我选 1 3 4 这三个面值则应为:
一、Problem
二、Solution
方法一:位运算
CN0 个,
CN1 个,
CN2 个,
…
CN0 +
CN1 +
CN2 + … +
CNN =
2N,也就是说不同的子集的个数为
2N 个。
set
1
2
3
4
5
二进制
1
0
1
1
0
面值状态
√
×
√
√
×
import java.util.*; import java.math.*; import java.io.*; public class Main{ static class Solution { void binary_enum(int n) { int tot = 1 << n; for (int i = 0; i < tot; i++) { for (int j = 0; j < n; j++) { if ((i & (1 << j)) > 0) System.out.printf("%d ", j); } System.out.println(); } } void init() { Scanner sc = new Scanner(new BufferedInputStream(System.in)); int n = sc.nextInt(); binary_enum(n); } } public static void main(String[] args) throws IOException { Solution s = new Solution(); s.init(); } }
复杂度分析
O(2N×N),
O(1),
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算