18 m 元素集合的 n 个元素子集
来源:互联网 发布:淘宝有哪些靠谱的日代 编辑:程序博客网 时间:2024/05/16 07:45
说明:假设有个集合拥有m个元素,任意的从集合中取出n个元素,则这n个元素所形成的可能子集有那些?
解法:假设有5个元素的集点,取出3个元素的可能子集如下:
{1 2 3}、{1 2 4 } 、{1 2 5}、{1 3 4}、{1 3 5}、{1 4 5}、{2 3 4}、{2 3 5}、{2 4 5}、 {3 4 5}
这些子集已经使用字典顺序排列,如此才可以观察出一些规则: 如果最右一个元素小于m,则如同码表一样的不断加1 如果右边一位已至最大值,则加1的位置往左移 每次加1 的位置往左移后,必须重新调整右边的元素为递减顺序,所以关键点就在于哪一个位置必须进行加1 的动作,到底是最右一个位置要加1 ?还是其它的位置?
在实际撰写程式时,可以使用一个变数 positon来记录加1 的位置,position的初值设定为 n- 1, 因为我们要使用阵列,而最右边的索引值为最大 的n- 1,在position位置的值若小于m就不断加 1 , 如果大于m了,position就减1 , 也就是往左移一个位置; 由于位置左移后, 右边的元素会经 过调整,所以我们必须检查最右边的元素是否小于m ,如果是,则position调整回n- 1,如果不是,则positon维持不变。
***********************程序************************
#include <stdio.h>
#include <stdlib.h>
#define MAX 20
int main(void) {
int set[MAX];
int m, n, position;
int i;
printf("输入集合个数 m:");
scanf("%d", &m);
printf("输入取出元素 n :");
scanf("%d", &n);
for(i = 0; i < n; i++)
set[i] = i + 1;
// 显示第一个集合
for(i = 0; i < n; i++)
printf("%d ", set[i]);
putchar('\n');
position = n - 1;
while(1) {
if(set[n-1] == m){
position--;
printf("position=%d\n",position);
}else{
position = n - 1;
printf("position=%d\n",position);
}
set[position]++;
// 调整右边元素
for(i = position + 1; i < n; i++)
set[i] = set[i-1] + 1;
for(i = 0; i < n; i++)
printf("%d ", set[i]);
putchar('\n');
if(set[0] >= m-n+1)
break;
}
return 0;
}
********************END******************
- 18 m 元素集合的 n 个元素子集
- m 元素集合的n 个元素子集
- Algorithm Gossip: m元素集合的n个元素子集
- N个元素集合的M子集问题
- m个元素的集合取n个元素的子集
- 求m个元素集合中n个元素的所有子集(C/OC)
- m元素集合的n個元素子集
- 每日一算法:m元素集合的n个元素子集
- 求集合中M个元素构成的子集问题
- m个元素的n元素子集(c/python略)
- 给定正整数n和m,计算出n个元素的集合{1,2,...,n}可以划分为多少个不同的由m个元素组成的子集合
- n个元素求m个最大的元素
- 设S是有n个元素的集合,S的幂集是S所有可能的子集组成的集合。
- 从含有m个元素的集合中任选n个的算法
- 从含有M个元素的集合中任选n个的排列组合
- k个元素的子集 C(n,k)
- 使用递归函数,输出n个元素的所有子集
- 使用递归函数,输出n个元素的所有子集
- php与paypal整合方法
- Eclipse配色方案插件 真漂亮!
- MFC初始化时隐藏对话框
- 数字证书简介
- NT_iOS笔记—iOS图片显示1_图片放大缩小
- 18 m 元素集合的 n 个元素子集
- 文本框只允许输入数字,中文,字母
- typedef和#define的区别
- 今天起可以在CSDN写博客了
- pl/sql 在title中显示连接路径, 避免sql执行其他数据库中
- 『高效程序员的45个习惯:敏捷开发修炼之道』读书笔记
- Unity与Android交互
- android下ViewGroup的事件分发和处理
- 算法学习笔记——分治法