写这个的起因是遇到一个题,从0 1 2 3 4 5 6 7从选出五个数字组成一个五位数,能有5整除的数有哪些,个人觉得问题的关键在于排列组合,从这7个数中选出5个数能有,多少种组合,每种组合又有多少种排列
排列组合算法可以看做两部分,组合算法和排列算法
组合算法
C(m,n):从m个数中选出n个数,总共有多少种不同的组合
设计思想如下:
程序代码如下:
#include<stdio.h>
#define M 100
void comb(int *tar, int *sou, int t, int s, int n, int m);
void output(int *tar, int t);
int sum = 0;
int main()
{
int sou[M] = {
1,2,3,4,5 };//sou为初始集合
int tar[M] = {
0,0,0 };//tar为被选出的集合
int s, t;//s为初始集合长度,t为需要选出的集合长度
s = 5;
t = 3;
comb(tar,</