当前位置: 代码迷 >> C语言 >> 优化这个程序
  详细解决方案

优化这个程序

热度:338   发布时间:2008-04-22 14:27:17.0
优化这个程序
遇到这个题目:
第一行输入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;
}
----------------解决方案--------------------------------------------------------
  相关解决方案