AKSZ-枚举算法
2024-03-17 17:30:12
发布于:广东
枚举算法
进制转化
C++中进制转化
表示方法
进制 | 开头 |
---|---|
二进制 | 0b |
八进制 | 0 |
十六进制 | 0x |
示例
A = 0x111; // 二进制
B = 071; // 八进制
C = 0xA1; // 十六进制
进制转化方式
十进制转x进制
除 x 取余,逆序排列
x进制转十进制
乘 x 取整,顺序排列
枚举算法
要素
枚举对象
枚举范围
判定条件
时间测试
clock_t start,end;
start = clock();
end = clock();
printf("%2lf MS",double(end-start)/CLOCKS_PER_SEC*1000);
二进制枚举子集
const int MAXN = 1000;
int n;
int a[MAXN];
void solve(int x)
{
for(int i=0;i<n;i++)
{
if((1<<i)&x)
{
cout << a[i] << " ";
}
}
cout << endl;
}
int main()
{
cin >> n;
for(int i=0;i<n;i++)
{
cin >> a[i];
}
for(int i=0;i<=(1<<n)-1;i++)
{
solve(i);
}
return 0;
}
埃氏筛法
代码
// 预处理
void init(){ // O(nloglogn)
for(int i=2;i<=sqrt(n);i++)
{
if(!vis[i])
{
for(int j=2*i;j<=n;j+=i)
{
vis[j] = 1;
}
}
}
}
全部评论 1
重点突出,简洁明了
2024-03-20 来自 广东
0
有帮助,赞一个