优化这个程序
遇到这个题目:第一行输入n(n=0时结束)
下面n行输入n(0 < N <= 1,000,000)个IP地址
统计哪个IP地址可能是黑客的IP
要求这个IP地址出现的次数多于n/2次
我写了以下的程序
但是递交给系统现实我的运行时间超出要求
需要进行优化
请各位大虾看看在哪个地方能进行优化呢?
#include<stdio.h>
#include<string.h>
#include<malloc.h>
int main()
{int **a;int n,i,cas,j;int *b;
while(1){
scanf("%d",&n);
if(n==0)return 0;
else{
a=(int**)malloc(n*sizeof(int*));
for(i=0;i<n;i++)
a[i]=(int*)malloc(20*sizeof(int));
b=(int *)malloc(n*sizeof(int));
for(i=0;i<n;i++)
{ scanf("%d.%d.%d.%d",&a[i][0],&a[i][1],&a[i][2],&a[i][3]);
b[i]=1;}
i=0;
for(i=0;i<n-1;i++)
{if(b[i]==0)continue;
for(j=i+1;j<n;j++)
if(a[i][0]==a[j][0]&&a[i][1]==a[j][1]&&a[i][2]==a[j][2]&&a[i][3]==a[j][3]){b[i]++;b[j]=0;}}
cas=1;
for(i=0;i<n;i++){
if(b[i]!=0&&b[i]>n/2){
printf("Case %d:\n",cas);
printf("%d.%d.%d.%d",a[i][0],a[i][1],a[i][2],a[i][3]);
}
}//for
}//else
}//while
return 0;
}