Informatika gyűjtemény

Egy szinttel feljebb particio.cpp

2004050607080910

NézetNyomtat

particio.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: utf-8
Méret: 931 byte
#include <stdio.h>

/*
    Partíciók előállítása
    A programot Uray M. János készítette 2008. október 21-én.
*/

#define MaxN 100

// A: a partíciót tartalmazó tömb
int A[MaxN];

void MakePartitions (int);
void Print (int);

int main (void) {
    printf("<-- Start -->\n");
    MakePartitions(10);
    return 0;
}

void MakePartitions (int N) {
    // N: a partícionálandó szám
    // M: a partíció hossza
    // Q: Az első egyes előtti utolsó index (0-tól)
    // D: A maradékos osztás osztója
    // P: a partíciók száma
    int I, M = 1, Q = 0, D;
    long P = 1;

    if (> MaxN || N < 2)
        return;

    A[0] = N;
    //Print(M);
    while (>= 0) {
        D = A[Q] - 1;
        for (= M - Q + D; N > D; N-= D, Q++)
            A[Q] = D;
        A[Q] = N;
        M = Q + 1;
        for (; Q >= 0 && A[Q] == 1; Q--);
        //Print(M);
        P++;
    }
    printf("There are %ld partitions.\n", P);
}
void Print (int M) {
    for (int I = 0; I < M; I++)
        printf("%d ", A[I]);
    printf("\n");
}
(Vissza)