如何编写一个C语言程序,实现在n个数字里面抽取m个数字:
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/10/03 06:24:08
如何编写一个C语言程序,实现在n个数字里面抽取m个数字:
e.g.:输入n=5,m=4
→输入5个数字:1 2 3 4 5
→输出所有4个数字的组合:1 2 3 4
1 2 3 5
1 3 4 5
2 3 4 5
e.g.:输入n=5,m=4
→输入5个数字:1 2 3 4 5
→输出所有4个数字的组合:1 2 3 4
1 2 3 5
1 3 4 5
2 3 4 5
// 兵无常势,水无常形,递归遮罩,玲巧组合
#include <stdio.h>
#define SWAP(a, b) a^=b^=a^=b;
int m, n;
int ar[20], arr[20];
void output()
{
int i,k;
for (i = k = 0; i < n && k < m; i++)
{
if (ar[i])
{
k ++;
printf("%d ", arr[i]);
}
}
printf("\n");
}
void combine(int l)
{
int p;
if (-1 < l)
{
p = l;
while(l + 1 < n && !ar[ l + 1 ])
{
SWAP(ar[p], ar[l+1]);
output();
combine(p - 1);
SWAP(ar[p], ar[l+1]);
l ++;
}
}
}
void main()
{
int i;
printf("Input n: ");
scanf_s("%d", &n);
printf("Input m: ");
scanf_s("%d", &m);
printf("Input numbers: ");
for (i=0; i<n; i++)
{
ar[i] = (i<m) ? 1 : 0;
scanf_s("%d", &arr[i]);
}
printf("The combines are:\n");
output();
if (m < n)
{
combine(m-1);
}
scanf_s("%c", &m);
getchar();
}
#include <stdio.h>
#define SWAP(a, b) a^=b^=a^=b;
int m, n;
int ar[20], arr[20];
void output()
{
int i,k;
for (i = k = 0; i < n && k < m; i++)
{
if (ar[i])
{
k ++;
printf("%d ", arr[i]);
}
}
printf("\n");
}
void combine(int l)
{
int p;
if (-1 < l)
{
p = l;
while(l + 1 < n && !ar[ l + 1 ])
{
SWAP(ar[p], ar[l+1]);
output();
combine(p - 1);
SWAP(ar[p], ar[l+1]);
l ++;
}
}
}
void main()
{
int i;
printf("Input n: ");
scanf_s("%d", &n);
printf("Input m: ");
scanf_s("%d", &m);
printf("Input numbers: ");
for (i=0; i<n; i++)
{
ar[i] = (i<m) ? 1 : 0;
scanf_s("%d", &arr[i]);
}
printf("The combines are:\n");
output();
if (m < n)
{
combine(m-1);
}
scanf_s("%c", &m);
getchar();
}
C语言编写一个程序,实现如下功能:从键盘输入一个三位数,求各位数字之和.
用C语言编写程序,随机输出一个使用0~9是个数字组成无重复的七位数
C语言编写程序 求一个整数各位数字之和.
如何在C语言中先输入一个整数N表示将要输入的数字的个数,再输入N个数字,求这N个数字的最大、小值、平均
编写程序实现输入整数n,输出如下所示由数字组成的菱形.用c语言写.1 121 12321 1234321 12321 1
1)编写一个C语言程序,输入a、b、c 3个值,输入其中最大者,要求在子函数里面比较数大
用C语言!编写一个程序求出200~300 之间的整数,且满足条件:它们3 个数字之积为42,3个数字之和为12 .
用C语言数组编写一个程序实现求Fibonacci数列的前n个数.
怎样使3个数字构成一个三位数的C语言程序
C语言的一个简单程序:输入100个任意数字,按从小到大排序.
编写程序,利用循环语句在同一行中逐 个显示从1至n的数字,每个数字之前保留2个空格.
c语言编程问题,计算出从n 个不同元素中取出m 个元素(m≤n)的组合数。编写程序