| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 320 人关注过本帖
标题:优化这个程序
只看楼主 加入收藏
含光剑
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-4-22
收藏
 问题点数:0 回复次数: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;
}
2008-04-22 14:27
快速回复:优化这个程序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025752 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved