利用下位数组,不值当写博客。回头git搞好,代码片存下删了。

static inline void setbit_t(unsigned int arr[], unsigned int dig)
{
    *(arr+(dig>>5)) |= (0x1 << dig%32);
}
static inline int issetbit_t(unsigned int arr[], unsigned int dig) // has set return 1, or  return 0
{
    return *(arr+(dig>>5)) &= (0x1 << dig%32);
}
unsigned int is_duparr(unsigned int arr[], unsigned int n, unsigned int max)
{
	unsigned int i;
	unsigned int * bitarr = (unsigned int *)malloc((max<<5+1)*sizeof(unsigned int));
	memset(bitarr, 0, n * sizeof(unsigned int));
	for(i = 0; i < n; i++, arr++)
	{	
		if(issetbit_t(bitarr, *arr))
			return *arr;
		else
			setbit_t(bitarr, *arr);
	}
	free(bitarr);
	return 0;	
}

  

 posted on 2014-07-19 00:22  chagmf  阅读(162)  评论(0)    收藏  举报