| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 515 人关注过本帖
标题:难搞的数字模式
只看楼主 加入收藏
蓝桥
Rank: 2
等 级:论坛游民
帖 子:18
专家分:22
注 册:2014-2-26
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:6 
难搞的数字模式
#include<stdio.h>
#include<stdlib.h>
main()
{
    int i,j,n,flag,max=0,result=0,*a;
    scanf("%d",&n);
    a=(int *)malloc(n*sizeof(int));
    for(i=0;i<n;i++)
        scanf("%d",a+i);
    for(i=0;i<n-1;i++)
    {
        flag=0;
        for(j=i;j<n;j++)
        {
            if(a[i]==a[j])
                flag++;
        }
        if(flag>max)
        {
            max=flag;
            result=a[i];
        }
        if(flag==max && a[i]<result)
            result=a[i];
    }
    printf("%d\n",result);
    return 0;
}
运行结果是Time Limit Exceeded,算法应如何改改?
搜索更多相关主题的帖子: include result 
2014-02-27 00:05
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:3 
你的程序想干嘛呢

DO IT YOURSELF !
2014-02-27 18:36
loveClangage
Rank: 8Rank: 8
来 自:广东云浮
等 级:蝙蝠侠
帖 子:326
专家分:891
注 册:2013-8-23
收藏
得分:3 
你想实现什么?

编写的程序,不能改变世界,却可以改变自己...
2014-02-27 19:28
蓝桥
Rank: 2
等 级:论坛游民
帖 子:18
专家分:22
注 册:2014-2-26
收藏
得分:0 
Description   数字的模式是指在一堆给定数字中出现次数最多的数值,如5,5,5,3,3,2,6,4,它的模式就是5。现在你的任务,就是从数字中找到它的模式.
Input   第一行为整数N.从第二行开始为N个整数。对于输入的每个数,有( |input_number| <= 2000000 ).Output   输出这些数字的模式,如果模式个数不为1,选择它们之中较小的。
Sample Input

10
1 2 3 4 5 6 7 8 9 9


Sample Output

9
这是原题
2014-02-28 00:12
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:3 
你试试吧
程序代码:
#include <stdio.h>

int main()
{
    int* bm = calloc( 2000000*2+1, sizeof(int) ); // |input_number|<=2000000

    int n;
    scanf( "%d", &n );
    for( int i=0; i<n; ++i )
    {
        int t;
        scanf( "%d", &t );
        ++bm[t+2000000];
    }

    int maxidx=0, maxcnt=bm[maxidx];
    for( int i=1; i<2000000*2+1; ++i )
    {
        if( bm[i] > maxcnt )
            maxidx=i, maxcnt=bm[maxidx];
    }

    free( bm );

    printf( "%d\n", maxidx-2000000 );
    return 0;
}

2014-02-28 08:45
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
程序代码:
#include <stdio.h>

int main()
{
    int t[]={1,2,10,11,3,4,3,5,5,5,6,6,7,7,8,10,10};
    int i;
    int s[20000];
    for(i=0;i<20000;i++) s[i]=0;
    int len=sizeof(t)/sizeof(int);
    for(i=0;i<len;i++)
    {
        s[t[i]]++;
    }
    int max=0;
    for(i=0;i<20000;i++)
    {
       if(max<s[i]) max=s[i];
    }
    for(i=0;i<20000;i++)
    {
       if(max==s[i]) break;
    }
    printf("%d\n",i);
    return 0;
}

DO IT YOURSELF !
2014-02-28 08:58
蓝桥
Rank: 2
等 级:论坛游民
帖 子:18
专家分:22
注 册:2014-2-26
收藏
得分:0 
很感谢楼上的代码,,可是运行结果都是wrong answer,另外,此题需要输入值
我的代码结果正确,可时间复杂度太大,有没有更好的实现方法??
2014-02-28 22:22
快速回复:难搞的数字模式
数据加载中...
 
   



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

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