| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 866 人关注过本帖
标题:用C语言如何编程实现从三个数组中各抽取几个数进行组合的问题?
只看楼主 加入收藏
艾米_818
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2014-1-5
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
用C语言如何编程实现从三个数组中各抽取几个数进行组合的问题?
例:从数组A中抽取3个数,数组B中抽取2个数,数组C中抽取1个数,组成6个数的组合,求源程序。
 A={3,4,6,7,8,9,11,13,14,15,16,18,19,20,24,27,28,29,33}
B={1,2,10,12,17,21,22,25,26,30,31,32}
C={5,23}
搜索更多相关主题的帖子: C语言 源程序 如何 
2014-01-05 15:04
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:0 
可以用 随机函数 分别对数组进行抽取啊...  就是根据数组下标来的

程序还是自己编写的好,很简单的

三十年河东,三十年河西,莫欺少年穷!
2014-01-05 15:35
华子hear
Rank: 3Rank: 3
来 自:陕西西安
等 级:论坛游侠
帖 子:57
专家分:104
注 册:2013-6-3
收藏
得分:0 
。。。。。
2014-01-05 18:41
艾米_818
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2014-1-5
收藏
得分:0 
回复 2楼 韶志
我不懂,帮帮忙,发一下哈!
2014-01-06 12:37
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:20 
回复 4楼 艾米_818
程序代码:
#include<stdio.h>
#include<time.h>
#include<stdlib.h>

void fun(int,int,int);
int D[6];        //定义数组D,抽取的数全放在这里
void main()
{
    int i;
    int A[19]={3,4,6,7,8,9,11,13,14,15,16,18,19,20,24,27,28,29,33};
    int B[12]={1,2,10,12,17,21,22,25,26,30,31,32};
    int C[2]={5,23};
    fun(A,19,3);
    fun(B,12,2);
    fun(C,2,1);
    for(i=0;i<6;i++)
        printf("%d\t",D[i]);
}

void fun(int a[],int m,int n){    //抽取函数,m 表示数组长度,n 表示要抽取几个数
    static int i=0;              //定义成静态变量,知道含义吧?不知道看书去
    int j=0,k,t;
    srand(time(NULL));
    for(i;i<6;i++){
        t=rand()%(m-j+1);
        D[i]=a[t];
        for(k=t;k<m-j-1;k++)     //抽取一个数后,把数组中的这个数删除,防止下次再次被抽中
            a[k]=a[k+1];
        if(++j==n){             //抽满所需的个数就中断
            i++;
            break;
        }
    }
}

        


三十年河东,三十年河西,莫欺少年穷!
2014-01-06 13:20
艾米_818
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2014-1-5
收藏
得分:0 
回复 5楼 韶志

 //抽取一个数后,把数组中的这个数删除,防止下次再次被抽中?
比如:数组A中随机抽取3个数{3,4,6},这三个数就只能用一次吗,能不能再组成{3,7,8}等等,意思就是一个数可以重复使用,只要组成不同的组合就行了。
2014-01-06 13:38
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:0 
回复 6楼 艾米_818
   这个删除只是定义在一次抽取(抽三个数看做一次)中,如果不删除已抽到的数,可能会出现抽取结果为{3,3,3,}的情况
这个删除只是暂时性的,不会改变数组A的内容
下次再对A进行抽取时,A又变回原样了

不知道你懂不懂我意思,不过不删除也行,看你的意思

三十年河东,三十年河西,莫欺少年穷!
2014-01-06 13:44
艾米_818
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2014-1-5
收藏
得分:0 

厉害!向你学习哈!
2014-01-06 13:48
C_printf
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:102
专家分:122
注 册:2010-1-26
收藏
得分:0 
5楼题都读不清楚就教人写代码?
2014-01-06 14:23
艾米_818
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2014-1-5
收藏
得分:0 
鍥炲? 9妤
2014-01-07 00:02
快速回复:用C语言如何编程实现从三个数组中各抽取几个数进行组合的问题?
数据加载中...
 
   



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

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