宿題見てやるよ
■ このスレッドは過去ログ倉庫に格納されています
0023デフォルトの名無しさん
NGNG順列の生成方法を、奥村晴彦著、C言語による最新アルゴリズム事典、
ISBN 4-87408-414-1の119ページからぱちって来た。
#include <stdio.h>
#define N 9
int check(int a[])
{
if ((a[0] + a[1] + a[2] == 15) &&
(a[3] + a[4] + a[5] == 15) &&
(a[6] + a[7] + a[8] == 15) &&
(a[0] + a[3] + a[6] == 15) &&
(a[1] + a[4] + a[7] == 15) &&
(a[2] + a[5] + a[8] == 15) &&
(a[0] + a[4] + a[8] == 15) &&
(a[2] + a[4] + a[6] == 15)) { return 1; } else { return 0; }
}
void perm(int a[], int n, int i, int j)
{
int k;
a[i] = j;
if (j == N) {
if (a[0] == n && check(a)) {
putchar('\n');
printf ("%d %d %d\n", a[0], a[1], a[2]);
printf ("%d %d %d\n", a[3], a[4], a[5]);
printf ("%d %d %d\n", a[6], a[7], a[8]);
}
}
else {
for (k = 0; k < N; k++) {
if (a[k] == 0) { perm(a, n, k, j + 1); }
}
}
a[i] = 0;
}
void main(void)
{
int i, n;
int a[N];
printf("input n: "); scanf("%d", &n);
for (i = 0; i < N; i++) { a[i] = 0; }
for (i = 0; i < N; i++) { perm(a, n, i, 1); }
}
■ このスレッドは過去ログ倉庫に格納されています