| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 787 人关注过本帖, 1 人收藏
标题:计算组合和排列的源代码
只看楼主 加入收藏
canxden
Rank: 3Rank: 3
来 自:江西奉新
等 级:论坛游侠
帖 子:114
专家分:105
注 册:2011-3-18
结帖率:100%
收藏(1)
 问题点数:0 回复次数:3 
计算组合和排列的源代码
程序代码:
#include <stdio.h>
void print_date (const int a,const int b) {
   printf("n = %d , m = %d",a,b);
}

int pailie (int a,int b) {
    int tmp = 1;
    for (b-=1;0!=(b+1);b--) {
         tmp*=(a-b);
    }
    return tmp;
}


int zuhe (int a,int b) {
    int tmp,c,d,e;
    c=b;
    for (c-=1;(c+1)!=0;c--) {
       d*=(a-c);
    }
    c=b;
    for (c-=1;(c+1)!=0;c--) {
       e*=(b-c);
    }
    tmp = d/e;
  return tmp;
}

int main (void) {
   int x,y,i,tmp,choose;
   printf("输入两个数字\n");
   printf("第一个数字=");
   scanf("%d",&x);
   printf("第二个数字=");
   scanf("%d",&y);
   if (y>x){
     i=x;
     x=y;
     y=i;
   }
     do {
       printf("\n计算m A n输入1,计算m C n输入2 :");
       scanf("%d",&choose);
     } while (choose>2);

   print_date (x,y);

   switch (choose) {
     case 1:
       tmp = pailie (x,y);
       printf("\n n A m =%d\n",tmp);
       break;
     case 2:
       tmp = zuhe (x,y);
       printf("\n n C m =%d\n",tmp);
       break;
   }
  scanf("%d",&i);

 return 0;
}
搜索更多相关主题的帖子: 源代码 
2011-04-23 09:46
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:0 
学习!!!

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-04-23 10:46
canxden
Rank: 3Rank: 3
来 自:江西奉新
等 级:论坛游侠
帖 子:114
专家分:105
注 册:2011-3-18
收藏
得分:0 
程序代码:
#include <stdio.h>
void print_date (const int a,const int b) {
   printf("n = %d , m = %d",a,b);
}

int pailie (int a,int b) {
    int tmp = 1;
    for (b--;0!=(b+1);b--) {
         tmp*=(a-b);
    }
    return tmp;
}


int zuhe (int a,int b) {
    int c,d=1,e=1;
    c=b;
    for (--c;(c+1)!=0;--c) {
       d*=(a-c);
    }
    c=b;
    for (--c;(c+1)!=0;--c) {
       e*=(b-c);
    }
  return d/e;
}

int main (void) {
   int x,y,i,tmp,choose;
   printf("input 2 number\n");
   printf("the one=");
   scanf("%d",&x);
   printf("the two=");
   scanf("%d",&y);
   if (y>x){
     i=x;
     x=y;
     y=i;
   }
     do {
       printf("\n m A n input1?m C n input 2 :");
       scanf("%d",&choose);
     } while (choose>2);

   print_date (x,y);

   switch (choose) {
     case 1:
       tmp = pailie (x,y);
       printf("\n n A m =%d\n",tmp);
       break;
     case 2:
       tmp = zuhe (x,y);
       printf("\n n C m =%d\n",tmp);
       break;
   }
  scanf("%d",&i);

 return 0;
}


修改了一个bug,再简化了一下。

一个人能有多坚强,太安静,就成了孤单。
2011-04-23 10:53
canxden
Rank: 3Rank: 3
来 自:江西奉新
等 级:论坛游侠
帖 子:114
专家分:105
注 册:2011-3-18
收藏
得分:0 
解释一下,n A m就是n个元素选其中m个进行排列,可以有多少种,举个例子,有1,2,3三个数,选其中2个数不重复的乱序排列共有多少种。用枚举就是1和2,1和3,2和3,2和1,3和1,3和2六种 ,所以3 A 2就等于6………3 C 2 就是把1和2与2和1算一种 3 C 2就等于3……大概明白了了吧……

一个人能有多坚强,太安静,就成了孤单。
2011-04-23 11:10
快速回复:计算组合和排列的源代码
数据加载中...
 
   



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

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