淡泊明志 宁静致远
分类: C/C++
2006-11-06 09:07:21
题目: 有一个数组t[100],存放了1~99之间的数字,用效率较高的代码把重复数字去掉。例如数组{1,2,2,2,3,5,6,6}变成{1,2,3,5,6}。
因为是高效率,我们可以采用空间换时间的策略来解决。
下面是完整的源代码:
void RemoveRep()
{
int t[100],tTemp[100];
int i,j;
srand((unsigned)(time(NULL)));
for(i=0;i<100;i++) //初始化数组
{
t[i] = 9999;
tTemp[i] = 9999;
}
for(i=0;i<100;i++) //随机产生100个数字
{
j = rand()%99+1;
t[i] = j;
printf("%d\t",t[i]);
if(i%10 == 9)
printf("\n");
}
for(i=0;i<100;i++)//剔除算法
{
if(tTemp[t[i]] == 9999)
tTemp[t[i]] = t[i];
}
printf("********************************************************************************\n");
j = 0;
for(i=0;i<100;i++)
{
if(tTemp[i] != 9999)
{
j++;
printf("%d\t",tTemp[i]);
if(j%10 == 0)
printf("\n");
}
}
printf("\n");
}