| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 959 人关注过本帖
标题:找出一维数组中重复的问题。。。
只看楼主 加入收藏
a321gudu
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2014-12-24
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:15 
找出一维数组中重复的问题。。。
就是比如说有一个一维整形数组 a[5000]  类似于a[1]=6;a[2]=9;a[3]=8;a[4]=6;a[5]=7;a[6]=5;a[7]=13;a[8]=28;a[9]=45;a[10]=14;a[11]=2;a[12]=45;a[13]=3;a[14]=9;a[15]=4;a[16]=6;a[17]=4;a[18]=12;a[19]=15  ``````
输出数组 条件是:输出的这个数组后面的5个数组的值至少有两个相等  比如这个例子就要输出a[7] a[8]等等 这样的
我的思路是套用三个循环 但是在输出的时候总是出现问题 要么是输出不出来 要么是把一组错误的数组重复好多遍
希望大家可以给点思路或者是程序。。。
2014-12-24 19:30
a321gudu
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2014-12-24
收藏
得分:0 
求助啊求助啊。。。。
2014-12-24 20:00
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:0 
没听懂你的意思

一片落叶掉进了回忆的流年。
2014-12-24 20:21
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1692
专家分:4262
注 册:2007-12-27
收藏
得分:0 
只要你能说明白题目,也就基本会写了。

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2014-12-24 22:00
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:20 
程序代码:
#include<stdio.h>
#include <stdlib.h>
#include <time.h>

#define MAX 26       /* MAX >= 6 */

int main(void) {
    int i, j, k, n[MAX];
    srand((unsigned int)time(NULL));

    for(i = 0; i < MAX; i++) {
        /*使用 0-100 之间随机整数填充数组 */
        n[i] = 0 + (int)(100.0 * rand() / (RAND_MAX + 1.0));
        printf("%d ", n[i]);
    }

    printf("\n\n");

    for(i = 0; i < MAX - 5; i++) {
        for(j = i + 1; j < i + 5; j++) {
            for(k = i + 5; k > j; k--) {
                if(n[j] == n[k]) {
                    printf("-------------------------\n打印出得到的数组\n第1位为分割点\n第2-6位中有两个以上相同数\n第7位之后无意义\n-------------------------\n\n");
                    for(; i < MAX; i++) {
                        printf("%d ", n[i]);
                    }

                    goto OUT;
                }
            }
        }
    }

    printf("没有找到符合条件的连续6个以上的数!\n");
OUT:
    printf("\n\n");
    return 0;
}


[ 本帖最后由 longwu9t 于 2014-12-25 01:30 编辑 ]

Only the Code Tells the Truth             K.I.S.S
2014-12-25 00:54
巧若拙
Rank: 4
来 自:宁波余姚
等 级:业余侠客
威 望:1
帖 子:159
专家分:273
注 册:2014-8-24
收藏
得分:0 
三重循环没必要,二重足矣
程序代码:
#include<stdio.h>
#include <stdlib.h>
#include <time.h>

#define MAX 26       /* MAX >= 6 */

int main(void) {
    int i, j, k, n[MAX];
    srand((unsigned int)time(NULL));

    for(i = 0; i < MAX; i++) {
        /*使用 0-100 之间随机整数填充数组 */
        n[i] = 0 + (int)(100.0 * rand() / (RAND_MAX + 1.0));
        printf("%d ", n[i]);
    }

    printf("\n\n");

    for (i = 1; i < MAX - 4; i++) 
    {
        for (j = 1; j < 5; j++) 
        {
            if (n[i] == n[i+j]) 
            {
                for (k=i-1; k<i+5; k++)
                    printf("%d ", n[k]);
                printf("\n");
                break;
            }
        }
    }

    return 0;
}
2014-12-25 08:02
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:0 
回复 6楼 巧若拙
你这个两层循环足矣 不是很切题

因为你找到的重复数 总在第2位

实际上楼主所说的是需要找到的数组第1位之后的5位数至少有两个重复的

你的思路和算法没问题 结果还有待商榷

Only the Code Tells the Truth             K.I.S.S
2014-12-25 08:31
巧若拙
Rank: 4
来 自:宁波余姚
等 级:业余侠客
威 望:1
帖 子:159
专家分:273
注 册:2014-8-24
收藏
得分:0 
因为你找到的重复数 总在第2位
真的是这样吗?
2014-12-25 08:45
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:0 
回复 8楼 巧若拙
我说的是找到的

自然语言表达是不严谨

但你运行你的程序看几遍就知道我说的第2位 是指打印出的重复数

再看楼的要求
再来说是不是两层循环的事

Only the Code Tells the Truth             K.I.S.S
2014-12-25 08:49
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:0 
输出的这个数组后面的5个数组的值至少有2个相等,你要输出几个数组?

一片落叶掉进了回忆的流年。
2014-12-25 09:29
快速回复:找出一维数组中重复的问题。。。
数据加载中...
 
   



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

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