Primes Product
2016-07-07 02:15
274 查看
Suppose we can primes [2, 3, 5]. We should get [2, 3, 5, 6, 10, 15, 30].
1: First method, solve it recursively.
2: Solve is iteratively using bitmap, same idea as subset.
#include "header.h"
using namespace std;
vector<int> uniquePrimes(vector<int>& primes) {
int n = primes.size();
int mask = 1 << n;
vector<int> res;
for(int i = 1; i < mask; ++i) {
int product = 1;
for(int j = 0; j < primes.size(); ++j) {
if(i & (1 << j)) product *= primes[j];
}
res.push_back(product);
}
return res;
}
int main(void) {
vector<int> primes {2, 3, 5};
vector<int> res = uniquePrimes(primes);
for(int i = 0; i< res.size(); ++i) cout << res[i] << " ";
cout << endl;
}
1: First method, solve it recursively.
#include "header.h" using namespace std; void primeProduct(vector<int>& nums, vector<int>& res, int product, int pos) { if(pos > nums.size()) { return; } if(product != 1) { res.push_back(product); } for(int i = pos; i < nums.size(); ++i) { if(i > pos && nums[i] == nums[i-1]) continue; primeProduct(nums, res, product * nums[i], i + 1); } } vector<int> primeProduct(vector<int>& nums) { vector<int> res; int product = 1; int pos = 0; primeProduct(nums, res, product, 0); return res; } int main(void) { vector<int> nums{2, 3, 5}; vector<int> res = primeProduct(nums); for(int i = 0; i < res.size(); ++i) { cout << res[i] << " "; } cout << endl; }
2: Solve is iteratively using bitmap, same idea as subset.
#include "header.h"
using namespace std;
vector<int> uniquePrimes(vector<int>& primes) {
int n = primes.size();
int mask = 1 << n;
vector<int> res;
for(int i = 1; i < mask; ++i) {
int product = 1;
for(int j = 0; j < primes.size(); ++j) {
if(i & (1 << j)) product *= primes[j];
}
res.push_back(product);
}
return res;
}
int main(void) {
vector<int> primes {2, 3, 5};
vector<int> res = uniquePrimes(primes);
for(int i = 0; i< res.size(); ++i) cout << res[i] << " ";
cout << endl;
}
相关文章推荐
- Android音频实时传输与播放(三):AMR硬编码与硬解码
- ListView加CheckBox简单实现批量删除
- 终于写完了C语言的期末作业😂😂😂
- 自定义RxJava之旅
- Linux 2.0.2 中select()的主要代码片断——The C10M Problem
- Selenium webdriver实现原理
- python中字典按键或键值排序
- Button点击事件(显隐2)
- 《机器学习实战》读书笔记之机器学习基础
- bzoj2154(莫比乌斯反演)
- [LeetCode]Sum of Two Integers
- bootstrap modal 垂直居中对齐
- CVP认证学习笔记--李天宇027对资源的管理
- 苹果发布 iOS 9.3.3 第五个开发者测试版和公测版
- Android 用MediaCodec实现视频硬解码
- Java指定时间执行任务
- 自定义C++类注册到Lua环境中遇到的问题
- 区间覆盖问题(贪婪算法)
- 常见动作 代码详注
- ACM课程学习总结