| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1997 人关注过本帖
标题:排列组合
取消只看楼主 加入收藏
纳兰伽香
Rank: 10Rank: 10Rank: 10
来 自:北京
等 级:贵宾
威 望:10
帖 子:426
专家分:1650
注 册:2015-4-5
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:25 
排列组合
程序代码:
组合问题
给定一个含有n个元素的整型数组a,从中任取m个元素,求所有组合。比如下面的例子
a = 1, 2, 3, 4, 5
m = 3
输出
1 2 3, 1 2 4, 1 2 5, 1 3 4, 1 3 5, 1 4 5
2 3 4, 2 3 5, 2 4 5
3 4 5
bool IsValid(int lastIndex, int value)  
{  
    int buffer[100]; 
    int i;
    for (i = 0; i < lastIndex; i++)  
    {  
        if (buffer[i] >= value)  
            return false;  
    }  
    return true;  
}  
  
void Select(int t, int n, int m)  
{ 
    bool IsValid(int lastIndex, int value);
    int buffer[100];
    int i;
    if (t == m) 
    {
        printArray(buffer, m);  
    }
    else  
    {  
        for (i = 1; i <= n; i++)  
        {  
            buffer[t] = i;  
            if (IsValid(t, i))
            {
                Select(t + 1, n, m); 
            }
        }  
    }  
}  
为什么不行,求帮帮忙

搜索更多相关主题的帖子: 元素 元素 color color 
2015-04-06 10:06
纳兰伽香
Rank: 10Rank: 10Rank: 10
来 自:北京
等 级:贵宾
威 望:10
帖 子:426
专家分:1650
注 册:2015-4-5
收藏
得分:0 
自顶

[ 本帖最后由 纳兰伽香 于 2015-4-6 10:15 编辑 ]

风回小院庭芜绿,柳眼春相续
2015-04-06 10:07
纳兰伽香
Rank: 10Rank: 10Rank: 10
来 自:北京
等 级:贵宾
威 望:10
帖 子:426
专家分:1650
注 册:2015-4-5
收藏
得分:0 
程序代码:
还有个问题  这是一个字符串的链接
#include<stdio.h>
int main()
{
    char str1[40];
    char str2[40];
    int count1 = 0;
    int count2 = 0;
    gets(str1);
    gets(str2);
    while(str1[count1])
        count1 ++;
    while(str2[count2])
        count2 ++;
    if(sizeof(str1) < count1 + count2 + 1)
        printf("Error\n");
    else
    {
        count2 = 0;
        while(str2[count2])
            str1[count1 ++] = str2[count2 ++];
        str1[count1] = '\0';
        printf("str1 = %s\n",str1);
    }
    return 0;
}


为什么最后要str1[count1] = '\0'; 不懂 求帮帮忙

风回小院庭芜绿,柳眼春相续
2015-04-06 10:31
纳兰伽香
Rank: 10Rank: 10Rank: 10
来 自:北京
等 级:贵宾
威 望:10
帖 子:426
专家分:1650
注 册:2015-4-5
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <string.h>
int main()
{
    char str1[10] = "123456";
    char str2[5] = "qwer";
    strcat(str1,str2);
    puts(str1);
    return 0;
}
很明显str1空间不足  但是为什么不报错 而且最后运行的结果是  123456qwer   不懂

风回小院庭芜绿,柳眼春相续
2015-04-06 10:43
纳兰伽香
Rank: 10Rank: 10Rank: 10
来 自:北京
等 级:贵宾
威 望:10
帖 子:426
专家分:1650
注 册:2015-4-5
收藏
得分:0 
回复 6楼 z_j_j_1
不是你说的那样  即使占用了  也不报错

风回小院庭芜绿,柳眼春相续
2015-04-06 11:03
纳兰伽香
Rank: 10Rank: 10Rank: 10
来 自:北京
等 级:贵宾
威 望:10
帖 子:426
专家分:1650
注 册:2015-4-5
收藏
得分:0 
回复 8楼 z_j_j_1
恩 我做了处理  
程序代码:
    if(sizeof(str1) > strlen(str1)+strlen(str2) + 1)
    {
        strcat(str1,str2);
    }
    else
    {
        printf("-_-!!!\n");
    }


风回小院庭芜绿,柳眼春相续
2015-04-06 11:22
纳兰伽香
Rank: 10Rank: 10Rank: 10
来 自:北京
等 级:贵宾
威 望:10
帖 子:426
专家分:1650
注 册:2015-4-5
收藏
得分:0 
回复 10楼 longwu9t
你帮我写下那个组合问题吖  我怎么都弄不对

风回小院庭芜绿,柳眼春相续
2015-04-06 13:11
纳兰伽香
Rank: 10Rank: 10Rank: 10
来 自:北京
等 级:贵宾
威 望:10
帖 子:426
专家分:1650
注 册:2015-4-5
收藏
得分:0 
回复 14楼 longwu9t
你调用我一楼给的那两个函数啊  看怎么给我改一下 还有
图片附件: 游客没有浏览图片的权限,请 登录注册


这里的123  132  231 都是同一个数吖  这样的有一个就行了  
你看看我的实例要求吖

风回小院庭芜绿,柳眼春相续
2015-04-06 13:22
纳兰伽香
Rank: 10Rank: 10Rank: 10
来 自:北京
等 级:贵宾
威 望:10
帖 子:426
专家分:1650
注 册:2015-4-5
收藏
得分:0 
回复 16楼 xzlxzlxzl
这种问题   我们老师说  用回朔法  是这个题目的最简单的方法 1楼的代码 就是回朔法 但是我就是调用不对

风回小院庭芜绿,柳眼春相续
2015-04-06 13:52
纳兰伽香
Rank: 10Rank: 10Rank: 10
来 自:北京
等 级:贵宾
威 望:10
帖 子:426
专家分:1650
注 册:2015-4-5
收藏
得分:0 
回复 18楼 xzlxzlxzl
哦哦  Σ( ° △ °|||)︴

风回小院庭芜绿,柳眼春相续
2015-04-06 14:18
快速回复:排列组合
数据加载中...
 
   



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

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