| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2866 人关注过本帖
标题:数学排列组合问题
只看楼主 加入收藏
烟雾中的迷茫
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:621
专家分:1069
注 册:2011-2-9
收藏
得分:0 
不是好意思是540
2011-06-07 11:55
烟雾中的迷茫
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:621
专家分:1069
注 册:2011-2-9
收藏
得分:0 
程序代码:
#include <stdio.h>

int c(int n, int m)
{
    if(m==1)
         return n;
    else
        return ((n-1)*n)/2;
}

int main()
{
    printf("%d\n", c(6, 2) *c(3,1)* c(4, 2)*c(2,1));
    return 0;
}


按照二楼的应该是这个 好像
2011-06-07 11:56
烟雾中的迷茫
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:621
专家分:1069
注 册:2011-2-9
收藏
得分:0 
程序代码:
#include <stdio.h>

int fun(int a)
{
    if(a==1)
        return 1;
    else
       return fun(a-1)*a;
}

int c(int n, int m)
{
    if(m==1)
         return n;
    else
        return fun(n)/(fun(m)*fun(n-m));
}
int main()
{
    printf("%d\n", c(6,2) *c(3,1)* c(4,2)*c(2,1));
    return 0;
}


或者跟更一般化
2011-06-07 12:12
江南烟雨0590
Rank: 2
等 级:论坛游民
帖 子:21
专家分:42
注 册:2011-5-22
收藏
得分:10 
算法应该是C(6,2)*C(4,2)*A(3,3)=540
2011-06-07 12:30
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 

重剑无锋,大巧不工
2011-06-07 12:44
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:0 
这个贴真不错,提醒我们应该去补数学了
2011-06-07 13:06
虾B写
Rank: 8Rank: 8
来 自:湖北
等 级:蝙蝠侠
威 望:3
帖 子:395
专家分:922
注 册:2009-10-1
收藏
得分:0 
540都出来了啊
1.放入信袋是没有顺序的。因为袋子是一样的。三个袋子(123,132,213,231,312,321)是一样的。
2.还有袋子里面如[1,2]和[2,1]是相同的东西.
(1) 15*6=90
(2) 90*6=540
我的算法只验证1~3个袋子是对的,4+个太多懒的在纸上列出来。

白娘故意下雨骗许仙的伞。祝英台十八里相送时装疯卖傻调戏梁山伯。七仙女挡住了董永的去路。牛郎趁织女洗澡时拿走了她的衣服。。。这些故事告诉我们;伟大爱情的开始,总归的有一个要先耍流氓!
2011-06-07 14:34
键盘农夫
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:88
专家分:106
注 册:2011-5-5
收藏
得分:0 
((6*5)/(2*1))*((4*3)/(2*1))*((2*1)/(2*1))

[ 本帖最后由 键盘农夫 于 2011-6-8 09:51 编辑 ]

《狂人C:程序员入门必备》
2011-06-07 14:36
键盘农夫
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:88
专家分:106
注 册:2011-5-5
收藏
得分:0 
程序代码:
/*
将标号为1.2.3.4.5.6的6张卡片放入3个不同的信封,
若每个信封放2张,有多少种放法
*/
#define NUM_OF_ENVELOPE     ( 3 )
#define MAX_NUM_IN_ENVELOPE ( 2 )
#define NUM_OF_CARD         ( 6 )
#define BEGIN               ( 0 )
#define END                 ( NUM_OF_CARD + 1 )
#define RECORD              ( MAX_NUM_IN_ENVELOPE - 1 + 1 )
#define NOTHING             ( 0 )

#include <stdio.h>
#include <stdlib.h>

void put_card_to_envelope(void);
void out_put(int (*)[ MAX_NUM_IN_ENVELOPE + 1 ] , int  , int );

int main( void )
{
  put_card_to_envelope();
  system("PAUSE");   
  return 0;
}

void put_card_to_envelope(void)
{
    static int num_of_card = BEGIN ;
    static int envelope[ NUM_OF_ENVELOPE ][ MAX_NUM_IN_ENVELOPE + 1 ] = {NOTHING};
    static int kinds_of_put_method  = 0 ;

    switch( num_of_card ){
         int i , j ;    
         case BEGIN :
            num_of_card ++ ;
            put_card_to_envelope(); 
            printf( "有%d种放法\n" , kinds_of_put_method ) ; 
            num_of_card = BEGIN ;
            kinds_of_put_method = 0 ;
            break;    
         default    :
            for( i = 0 ; i < NUM_OF_ENVELOPE ; i++ )
            {
              if( envelope[ i ][ RECORD ] < MAX_NUM_IN_ENVELOPE ){
                  envelope[ i ][ envelope[i][RECORD] ] = num_of_card ;
                  envelope[ i ][ RECORD ] ++ ;
                  num_of_card++;
                  put_card_to_envelope();   
                  num_of_card--; 
                  envelope[ i ][ RECORD ] -- ;
                  envelope[ i ][ envelope[ i ][ RECORD ] ] = NOTHING ;         
              }                          
            }      
            break;
         case   END :
            out_put( envelope , NUM_OF_ENVELOPE , MAX_NUM_IN_ENVELOPE ); 
            kinds_of_put_method++;
            break;
         }
}

void out_put(int (*p_en)[ MAX_NUM_IN_ENVELOPE + 1 ] , int n_en , int max_num )
{
    int i , j ;         

    for( i = 0 ; i< n_en ; i ++ ){
      for( j = 0 ; j < max_num ; j++ ){
         printf("%d " , p_en[i][j] );                              
       }
      putchar('|');
    }
    putchar('\n');           
}


[ 本帖最后由 键盘农夫 于 2011-6-7 14:59 编辑 ]

《狂人C:程序员入门必备》
2011-06-07 14:54
枪手问鼎英超
Rank: 2
等 级:论坛游民
帖 子:34
专家分:20
注 册:2011-6-1
收藏
得分:0 
回复 2楼 voidx
果然很暴力,果然是高手
2011-06-07 15:31
快速回复:数学排列组合问题
数据加载中...
 
   



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

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