问题背景:
已知数据的取值范围在0~10000000,且所取数据不重复,将输入的数据排序并尽可能的使用少的内存空间
#define BITSPERRWORD 32
#define SHIFT 5
#define MASK 0x1F
#define N 10000000
#include <stdio.h>
int a[1+N/BITSPERRWORD];
void set(int i){ a[i>>SHIFT] |= (1<<(i & MASK));}
void clr(int i){ a[i>>SHIFT] &= (1<<(i & MASK));}
int test(int i){ return a[i>>SHIFT] & (1<<(i & MASK));}
int main(){
int i;
for (i=0;i<N;i++)
clr(i);
for(i=0;i<N;i++)
if(test(i))
printf("%d/n",i);
return 0;
}
该程序本身没有什么问题,不过自己在利用scanf函数进行输入的时候,却不能很好的结束。
暂留此一疑问。