【编程珠玑】第一章位图排序

记录一下代码。

 1 #include<iostream>
 2 using namespace std;
 3 
 4 #define BITSPERWORD 32
 5 #define SHIFT 5
 6 #define MASK 0x1F
 7 #define N 10000000
 8 
 9 int a[1 + N/BITSPERWORD];
10 
11 void set(int i) { a[i >> SHIFT] |= 1 << (i&MASK); }
12 void clr(int i) { a[i >> SHIFT] &= ~(1 << (i&MASK)); }
13 int test(int i) { return a[i >> SHIFT] & (1 << (i&MASK)); }
14 
15 int main(void) {
16     int i;
17     for (i = 0; i < N; i++)        clr(i);
18     while (cin>>i)        set(i);
19     for (i = 0; i < N; i++) {
20         if (test(i))
21             cout << i<<endl;
22     }
23     system("pause");
24     return 0;
25 }
原文地址:https://www.cnblogs.com/liez/p/5880149.html