谢谢 分享[bc05]
有错没有?运行就进入了死循环
/* ------------------------------------------------------ *//* PROGRAM Subset Listing : */
/* This program lists all subsets, including empty set,*/
/* of a given set with elements {1,2,...,n} by using a */
/* direct generation method. */
/* */
/* Copyright Ching-Kuang Shene July/04/1989 */
/* ------------------------------------------------------ */
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 20
#define LOOP 1
void main(void)
{
char digit[MAXSIZE];
int i, j;
int n;
char line[100];
printf("\nDirect Generation of All Subsets of a ");
printf("\n=========================================");
printf("\n\nNumber of Elements in the Given Set --> ");
gets(line);
n = atoi(line);
/* ---You'd better check to see if n is too large--- */
for (i = 0; i < n; i++) /* clear all digits to 0 */
digit[i] = '0';
printf("\n{}"); /* outpout empty set {} */
while (LOOP) {
for (i = 0; i < n && digit[i] == '1'; digit[i] = '0', i++)
; /* find first 0 position */
if (i == n) /* if none, all pos. are 1 */
break; /* thus all elem. are in set*/
else
digit[i] = '1';/* now add one to this pos */
for (i = 0; i < n && digit[i] == '0'; i++)
; /* find first 1 position */
printf("\n{%d", i+1); /* show its numner and */
for (j = i + 1; j < n; j++) /* others */
if (digit[j] == '1')
printf(",%d", j + 1);
printf("}");
}
}
有错没有?运行就进入了死循环
gets(line);
什么意思?
[[it] 本帖最后由 jxt598598 于 2008-3-5 23:10 编辑 [/it]]