中易网

从m种不同元素里,每次取出n个元素, 元素可重复选取,不管顺序并成 一组,总的情况。求数学和C语言大神

答案:2  悬赏:60  
解决时间 2021-01-14 23:19
  • 提问者网友:且恨且铭记
  • 2021-01-13 22:43
从m种不同元素里,每次取出n个元素, 元素可重复选取,不管顺序并成 一组,总的情况。求数学和C语言大神
最佳答案
  • 二级知识专家网友:人间朝暮
  • 2021-01-13 23:19
#include

inline void swap(int *a, int *b)
{
int temp = *a;
*a = *b;
*b = temp;
}

inline void print(int p[], int n)
{
int i;
for (i = 0; i < n; i++) printf("%d ", p[i]);
printf("
");
}

inline void permute(int p[], int k, int n)  // 排列算法
{
int j;

if (k == n)
{
print(p, n);
}
else
{
for (j = k; j < n; j++)
{
swap(&p[k], &p[j]);    // 交换两个元素的位置
permute(p, k + 1, n);  // 递归调用 
swap(&p[j], &p[k]);    // 还原初始时状态
}
}
}

int main()
{
int i, n;
int p[10];
printf("请输入取多少个(max 9):");  // 输入n,最多选9个
scanf_s("%d", &n);
printf("
");

for (i = 0; i < n; i++)  // 假设有10个元素分别是1--10
{
p[i] = i + 1;
}

permute(p, 0, n); // 调用排列函数

return 0;
}
追问:很拉风的头像嘛,就不问你多大了。。。But,我想要公式。。公式可以引申。。。。还是谢啦~有公式告诉我~
追答:排列公式:A(上标n,下标m) 与顺序有关
组合公式:C(上标n,下标m)与顺序无关
追问:额~ ~这公式基础了点。。还是谢啦。
全部回答
  • 1楼网友:梦中风几里
  • 2021-01-13 23:30

c语言简单,数学的想不出。。。#include <stdio.h>
int count, m, n;
void run(int k, int t)
{
int i;
for(i = 0; i <= n - t; i++)
if(k < m)
run(k + 1, t + i);
else
count++;
}
int main()
{
count = 0;
scanf("%d %d", &m, &n);
run(0, 0);
printf("%d", count);
return 0;
}
追问:谢谢~But,我想要公式。。。我看到过公式,可惜忘了。。。。。公式可以引申。还是谢啦~ ~有公式告诉我~
追答:问题可以转化成 n个球放进编号的m个盒子里,有多少方案。
然而,排列组合已经还给老师。。。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息