对于给定的正整数n(n>1),求1-n构成集合的所有子集
#include <bits/stdc++.h>
using namespace std;
vector<vector<int> > ps; // 集合的集合
void Pset(int n) {
vector<vector<int> > ps1; // 辅助的集合的集合
vector<vector<int> >::iterator it;
vector<int> s;
ps.push_back(s); // 添加空集到 集合元素中
for(int i = 1; i <= n; i++) {
ps1 = ps;
for(it = ps1.begin(); it != ps1.end(); it++)
(*it).push_back(i); // ps1这个集合中的每个元素的末尾加i
for(it = ps1.begin(); it != ps1.end(); it++) // 将ps1的每个集合的元素添加到集合ps中
ps.push_back(*it);
}
}
void dispps() {
vector<vector<int> >::iterator it;
vector<int>::iterator sit;
for(it = ps.begin(); it != ps.end(); it++) {
cout << "{";
for(sit = (*it).begin(); sit != (*it).end(); sit++)
cout << *sit;
cout << "}";
}
cout << endl;
}
int main() {
int n = 3;
Pset(n);
cout << "1~" << n << "的幂集为:";
dispps();
return 0;
}
关于蛮力法的更多算法例子
某年级的同学集体去公园划船,如果每只船坐10人,那么多出两个座位;如果每只船多坐两人,那么可少租1只船,设计一个算法用蛮力法求该年级的最多人数
def solve():
for y in range(1,100):
for z in range(0,11):
if 10*y-2== 12*(y-1)-z:
x=10*y-2
print(x)
solve()