| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 970 人关注过本帖
标题:C语言循环还是数组
只看楼主 加入收藏
Brucehope
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2009-8-25
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:13 
C语言循环还是数组
用一个c程序编译得到结果:

1到33之间每6位为一组,从小到大排列

每组与其它组之间至少有一个数不得重复,最小的组合是1.2.3.4.5.6,最大的组合是28.29.30.31.32.33,同样的数字在同一组内不能重复,(如1.1.2.2.3.3,7.7.9.6.6.5这类的数字不能

算)但每组数与其它组至少有一个数不同,如:1.2.3.4.5.6和1.2.3.4.5.7,7.11.12.13.16.19和7.11.12.13.16.20的意思)也就是说任意一组数与其它所有组数之间可以有2到5个数字相同,

至少有一个不同

求:共有多少组组合??用C程序该怎么写?感谢回答!!
搜索更多相关主题的帖子: 急急急 
2009-08-25 15:26
godbless
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:216
专家分:950
注 册:2009-7-24
收藏
得分:0 
33*32*31*30*29*28  ????
2009-08-25 15:32
Brucehope
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2009-8-25
收藏
得分:0 
我想知道用C怎么写,不光只是要结果
2009-08-25 15:39
baikil
Rank: 10Rank: 10Rank: 10
来 自:X星球
等 级:青峰侠
威 望:4
帖 子:282
专家分:1580
注 册:2009-7-20
收藏
得分:0 
int sum = 0;
            int max = 12;
            Console.WriteLine("开始计算:");
            for (int t1 = 1; t1 < max-5; t1++)
            {
                for (int t2 = t1+1; t2 < max-4; t2++)
                {
                    for (int t3 = t2+1; t3 < max - 3; t3++)
                    {
                        for (int t4 = t3+1; t4 < max - 2; t4++)
                        {
                            for (int t5 = t4+1; t5 < max - 1; t5++)
                            {
                                for (int t6 = t5+1; t6 < max; t6++)
                                {
                                    //输出 t1,t2,t3,t4,t5,t6
                                   sum++;
                                }
                            }
                        }
                    }
                }
            }

自创QQ群64885635,方便C#学习交流.希望各项工作路好学都好入!
2009-08-25 15:57
Brucehope
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2009-8-25
收藏
得分:0 
能不能写的完整?刚编译出来有错误,感谢
2009-08-25 17:44
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
回复 3楼 Brucehope

        百度一下 “排列组合” ,试着写一下吧。
2009-08-25 18:57
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
收藏
得分:0 
main()
{
int a[6],n=0;
for(a[0]=1;a[0]<=28;a[0]++)
 {
  for(a[1]=2;a[1]<=29;a[1]++)
   {
    for(a[2]=3;a[2]<=30.;a[2]++)
      {
       for(a[3]=4;a[3]<=31;a[3]++)
       {
        for(a[4]=5;a[4]<=32;a[4]++)
          {
           for(a[5]=6;a[5]<=33;a[5]++)
            {
             n++;
          /* printf("%d.%d.%d.%d.%d.%d   ",a[0],a[1],a[2],a[3],a[4],a[5]);
             if(n%3==0)printf("\n"); */
            }
          }
       }
      }
   }
   
 }
 printf("%d\n",n);
}

我写的这程序算出有4096组排法,看是不是符合你的说法。
注释部分你可以让它输出,不过会一直刷屏。但可以看到每一组的排法。

努力—前进—变老—退休—入土
2009-08-25 20:28
Brucehope
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2009-8-25
收藏
得分:0 
感谢YUII,程序时对的,但不是4000多个组合,是4亿多个。。。。能不能帮忙我再修改下,让每一组输出的时候都能按大小排列的输出的话该怎么写?
2009-08-26 00:14
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
收藏
得分:0 
4亿?是有这么多,我定义n整型不够放,没想到有这么多。
定义成长整型就可以了。
算了一下有:481890304
差不多五亿组排法,但你说的要按大小排序的话,在最后一个for循环里加排序的就好。
这要多定义个6元素的数组,用冒泡法排序再输出就好。
不过程序运行完要花很长时间。就看着刷屏。

[ 本帖最后由 UserYuH 于 2009-8-26 00:45 编辑 ]

努力—前进—变老—退休—入土
2009-08-26 00:22
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:20 
回复 8楼 Brucehope
        不知道你从哪里求出结果是 4 亿  多呢?下面是我写的一个程序,输出到文件,每一个排列都有,总共为 1107568 组。下面是我的程序,谨作参考,如有错误,欢迎指正,谢谢:
程序代码:
#include<stdio.h>
int main(void)
{
    int a,b,c,d,e,f;
    long k=0;
    FILE *p;
    while((p=fopen("a.txt","w+"))==NULL);
    for(a=1;a<29;++a)
    {
        for(b=a+1;b<30;++b)
        {
            for(c=b+1;c<31;++c)
            {
                for(d=c+1;d<32;++d)
                {
                    for(e=d+1;e<33;++e)
                    {
                        for(f=e+1;f<34;++f)
                        {
                            fprintf(p,"%3d%3d%3d%3d%3d%3d|",a,b,c,d,e,f);
                            if(++k%6==0)
                            {
                                fprintf(p,"\n");
                            }
                        }
                    }
                }
            }
        }
    }
    fprintf(p,"k=%ld\n",k);
    fclose(p);
    return 0;
}     

2009-08-26 01:23
快速回复:C语言循环还是数组
数据加载中...
 
   



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

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