/* SUBSET-SUM問題を解く列挙法のアルゴリズム */ #include /* 標準入出力のヘッダファイルの読込み */ #define N 100 /* 配列a[ ]の最大サイズの定義 */ enum yn {yes, no}; /* 列挙データ型の定義 */ /* 関数の宣言 */ enum yn ssum(int *a, int b, int *x, int n); void next(int *x, int n); main() /* メインプログラム:問題SUBSET-SUMの入出力 */ { int a[N], x[N], b; /* 変数の宣言 */ int n, j; FILE *file; file=fopen("ssumdata", "r"); /* 入力ファイルを開く */ fscanf(file, "%d", &n); /* ファイルから入力データnを読込む */ if(n>N) /* nの大きさチェック */ {printf("Illegal array size n = %d for N = %d\n", n, N); exit(1);} printf("n = %d\na = ", n); for(j=0; j