Informatika gyűjtemény

Egy szinttel feljebb langford.cpp

2004050607080910

NézetNyomtat

langford.cpp (Vissza)
Az alábbi letöltési lehetőségek közül választhatsz: (segítség)
Karakterkódolás:
Sortörés:
Típus: text/plain
Tartalmaz szöveget
Karakterkódolás: us-ascii
Méret: 970 byte
#include <stdio.h>

#define N 14
#define M 7

/*
    Searches Langford permutations.
    Created by Janos M. Uray on 23th Sept. 2008.
*/

char A[N];
long XX = 0;

void Init (void);
int Next (void);
int Search (void);

int main (void) {
    printf("<-- Start -->\n");

    Init();

    do
        if (Search())
            XX++;
    while (Next());
    printf("%ld\n", XX);
    return 0;
}

void Init (void) {
    for (int I = 0; I < N; I++)
        A[I] = I/2 + 1;
}
int Next (void) {
    int X, Y, I, J, Min;

    for (= N - 2; X >= 0 && A[+ 1] <= A[X]; X--);
    if (== -1)
        return 0;
    Y = X + 1;
    Min = A[Y];
    for (= X + 2; I < N; I++)
        if (A[I] <= Min && A[I] > A[X]) {
            Y = I;
            Min = A[Y];
        }
    A[Y] = A[X];
    A[X] = Min;
    for (= X + 1, J = N - 1; I < J; I++, J--) {
        Min = A[I];
        A[I] = A[J];
        A[J] = Min;
    }
    return 1;
}
int Search (void) {
    int I, J, B;

    for (= 1; I <= M; I++) {
        for (= 0; A[J] != I; J++);
        B = 0;
        for (J++; A[J] != I; J++)
            B++;
        if (!= I)
            return 0;
    }
    return 1;
}
(Vissza)