| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 9751 人关注过本帖
标题:求助 一维数组求重复元素以及个数
只看楼主 加入收藏
rtfbvg
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2015-4-10
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:13 
求助 一维数组求重复元素以及个数
输入6个从小到大排列的数字,首要条件:要求输出其中重复元素最多的项以及个数,如果有多组重复元素个数一样时,输出最大的元素以及个数

Eg: 输入:3 3 5 5 7 9 得到:value=5, 相同个数为2;//元素3、 5均重复两次,所以取5

     输入:5 5 5 5 7 7 得到:value=5, 相同个数为4;//虽然7大于5,但是5重复了4次,所以取5

我首先写的代码如下,求大神帮我修改一下,感激不尽!!!
程序代码:
#include <stdio.h>

#define SIZE 6

int main (void) {
    int number[SIZE],i,k,value;
    int score;
    value=0;
    k =1; 
    i = 0;
    while (i < SIZE) {
        scanf("%d", &number[i]);
        i++;
    }

    i=0;
    while(i<SIZE-1) {
        if (number[i]==number[i+1]) {
            value = number[i];
                        k++;
        }
        i++;
    }
        printf("value=%d, 相同个数为%d\n", value, k);

在这种情况下,当只有一组元素重复时时满足条件的,但当我输入3 3 5 5 7 9的时候,得到的k的结果为3了,c语言在3的时候判断了一次,在5的时候判断了一次,所以得到的结果不符合条件。


然后我进行了修改,改成了下面的模式:(开头部分因为和上面相同,所以我省略了,只写了判断的部分)
程序代码:
        k=0;
    i=0;
    while(i<SIZE-1) {
        if (number[i]==number[i+1]) {
            value = number[i];
        }
        i++;
    }

    for(i=0;i<SIZE;i++) {
        if(number[i]==value) {
            k++;
        }
    }
        printf("value=%d, 相同个数为%d\n", value, k);

修改后对于3 3 5 5 7 9 这串数组满足条件了,但是对于5 5 5 5 7 7, 输出的结果为value=7, 相同个数为2;这里满足了输出最大的元素这个条件而不是重复次数最多的条件,这里我不知道该怎么改了,求求大神帮忙修改下,谢谢啦!

[ 本帖最后由 rtfbvg 于 2015-4-10 15:09 编辑 ]
搜索更多相关主题的帖子: 最大的 元素 
2015-04-10 15:07
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:16 
程序代码:
#include <stdio.h>

#define SIZE 6
#define max 20000

int main (void)
{
    int number[SIZE],i,m,n;
    int xy[max]={0};
    for(i=0;i<SIZE;i++)
    {
        scanf("%d", &number[i]);
        xy[number[i]]++;
    }
    for(i=0;i<max;i++)
    {
        if(xy[i]>=m)
        {
            m=xy[i];
            n=i;
        }
    }
    printf("重复频率最高=%d   其值=%d\n",m,n);
    return 0;
}

DO IT YOURSELF !
2015-04-10 15:41
rtfbvg
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2015-4-10
收藏
得分:0 
回复 2楼 wp231957
请问
xy[number[i]]++;
是什么意思呢?
2015-04-10 16:41
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:4 
他这是把你输入的数组的值作为另一个数组下标,扫描你输入的数并将该数对应下标的数组值加1,数组扫描完,重复数的数量也计数完成,该算法方便快速,不足之处是对你输入的数据有限制,比如他的实例要求你输入的数据为小于20000的正整数。

能编个毛线衣吗?
2015-04-10 17:10
纳兰伽香
Rank: 10Rank: 10Rank: 10
来 自:北京
等 级:贵宾
威 望:10
帖 子:426
专家分:1650
注 册:2015-4-5
收藏
得分:0 
回复 2楼 wp231957
为什么运行不过?

风回小院庭芜绿,柳眼春相续
2015-04-10 17:19
rtfbvg
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2015-4-10
收藏
得分:0 
回复 4楼 wmf2014
谢谢wmf2014!!

另外 int xy[max]={0};让xy 数组第200001项=0,起到什么作用呢?

[ 本帖最后由 rtfbvg 于 2015-4-10 18:04 编辑 ]
2015-04-10 17:59
rtfbvg
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2015-4-10
收藏
得分:0 
回复 5楼 纳兰伽香
需要赋予m,n初始值,比如说m=0;n=0;
2015-04-10 18:03
TAAAAB
Rank: 7Rank: 7Rank: 7
来 自:湖南
等 级:黑侠
威 望:1
帖 子:243
专家分:635
注 册:2011-5-29
收藏
得分:0 
程序代码:
#include <stdio.h>

#define SIZE 6


int main (void)
{
    int a[SIZE], count[SIZE];
    int i, j;
    int n;
    
    for (i = 0; i < SIZE; i++)
    {
        scanf("%d", &a[i]);
        count[i] = 1;
    }
    
    
    for (i = 0; i < SIZE - 1; i++)
        if (a[i] == a[i + 1])
            count[i + 1] = count[i] + count[i + 1];

    
    for (i = SIZE - 1; i > 0; i--)
    {
        for(j = i -1; j >= 0; j--)
            if(count[i] < count[j])
                break;
        if(j == -1)
        {
            n = a[i];
            break;
        }
        n = a[SIZE -1];

    }
        
    printf("出现次数最多的数为%d\n", n);

    return 0;
}

人有多懒,编程就有多难。
2015-04-10 18:03
·charles
Rank: 2
等 级:论坛游民
帖 子:67
专家分:48
注 册:2015-3-23
收藏
得分:0 
回复 2楼 wp231957
您的代码很经典,我还有一个问题,在里面m的作用,不用给值吗?那后面怎么比较大小呢,表示不懂。
貌似运行结果有点问题

编程!编程!!编程!!!
重要的事情说三遍!!!!
2015-04-20 01:29
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
回复 9楼 ·charles
m 就是一个临时变量 用来保存值最大的数值,应该赋初值为0  大概是copy代码时 遗漏了

DO IT YOURSELF !
2015-04-20 08:27
快速回复:求助 一维数组求重复元素以及个数
数据加载中...
 
   



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

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