A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

m元素集合的n个元素子集
  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. #define MAX 20

  4. int main(void) {
  5.     int set[MAX];
  6.     int m, n, position;
  7.     int i;

  8.     printf("输入集合个数 m:");
  9.     scanf("%d", &m);
  10.     printf("输入取出元素 n:");
  11.     scanf("%d", &n);

  12.     for(i = 0; i < n; i++)
  13.         set[i] = i + 1;

  14.     // 显示第一个集合
  15.     for(i = 0; i < n; i++)
  16.         printf("%d ", set[i]);
  17.     putchar('\n');
  18.    
  19.     position = n - 1;

  20.     while(1) {
  21.         if(set[n-1] == m)
  22.             position--;
  23.         else
  24.             position = n - 1;

  25.         set[position]++;

  26.         // 调整右边元素
  27.         for(i = position + 1; i < n; i++)
  28.             set[i] = set[i-1] + 1;

  29.         for(i = 0; i < n; i++)
  30.             printf("%d ", set[i]);
  31.         putchar('\n');

  32.         if(set[0] >= m - n + 1)
  33.             break;
  34.     }

  35.     return 0;
  36. }
复制代码



评分

参与人数 1黑马币 +1 收起 理由
类自通 + 1 学习

查看全部评分

4 个回复

倒序浏览
你都水了33贴了。。。。。
回复 使用道具 举报
类自通 发表于 2015-1-25 23:10
你都水了33贴了。。。。。

{:3_49:} 最近水的有点多啊 。。。
回复 使用道具 举报
qlqt 来自手机 中级黑马 2015-1-25 23:19:56
板凳
果然水了很多
回复 使用道具 举报

{:3_49:}。。。。。。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马