[C] Rozklad sumy

Garcia
Użytkownik
Użytkownik
Posty: 12
Rejestracja: 8 mar 2008, o 22:09
Płeć: Mężczyzna
Lokalizacja: bstok

[C] Rozklad sumy

Post autor: Garcia »

Witam serdecznie otóż mam problem :/ Nie moge jakos wymyslec jak to zrobic .
Pozatym rekurencyjnie ma być ;/
Doszedlem do tego ,że wypisuje np:. 10=10 , 10=9 etc ale cos z dolaczeniem +1 jest problem


aby dla jakieś tam liczby wczytanej z klawiatury wypisał jej rozkłady na sumy nieujemnych (dodatnich) liczb naturalnych większych od 1 i muszą być ustawione w kolejności nierosnącej (malejącej).

Np:. dla liczby 4
4=4
4=3+1
4=2+1+1
4=1+1+1+1

I takie wyniki ma zapisać do pliku

Pomożecie ? Pozdrawiam
Xitami

[C] Rozklad sumy

Post autor: Xitami »

zapytaj imć Googla o integer partition
Garcia
Użytkownik
Użytkownik
Posty: 12
Rejestracja: 8 mar 2008, o 22:09
Płeć: Mężczyzna
Lokalizacja: bstok

[C] Rozklad sumy

Post autor: Garcia »

Dzieki Nie powiem ,że to to ,ale to już matematyka wyższej jazdy niestety


a i kodu źródłowego w C nie moge znaleźć szczególnie z rekurencja ;/
Xitami

[C] Rozklad sumy

Post autor: Xitami »

poszukaj "fxtbook", rzecz którą trzeba mieć.
w swoich notatkach znalazłem takie coś, magiczna zwięzłość

Kod: Zaznacz cały

(*
/*========================================================================*/
/* C program for distribution from Frank Ruskey's                         */
/*   Combinatorial Object Server.                                         */
/* Generates all numerical partitions of n whose largest part is k.       */
/* No input error checking.  Assumes 0 <= k <= n <= MAX.                  */
/* A simple modification will generate all partitions of n (see           */
/* comment at end of program.)                                            */
/* Algorithm is CAT (Constant Amortized Time).                            */
/* The program can be modified, translated to other languages, etc.,      */
/* so long as proper acknowledgement is given (author and source).        */
/* Algorithm and original Pascal implementation: Frank Ruskey, 1995.      */
/* Translation to C: Joe Sawada, 1997.                                    */
/* The latest version of this program may be found at the site            */
/* http://theory.cs.uvic.ca/~cos/inf/nump/NumPartition.html    or         */
/* http://theory.uvic.ca/~cos/dis/programs.html                           */
/*========================================================================*/

#define MAX 100;

int  n,k;
int  p[100];

int min( int x, int y) {

	if (x<y) return x;
	return y;
}

void PrintIt(int t) {

	int i;

	for(i=1; i<=t; i++) printf("%d ", p[i]);
	printf("\n");
}

void P (int n, int k, int t) {

	int j;

	p[t] = k;
	if (n==k) 
             PrintIt(t);
	for (j=min(k,n-k); j>=1; j--) 
             P(n-k,j,t+1);
}


void main() {

	printf("Enter n,k: ");
	scanf("%d %d", &n ,&k );
  	P( n,k,1 );
  	/* NOTE: The call P( 2*n, n, 0 ) will produce all partitions of n. */
}
Garcia
Użytkownik
Użytkownik
Posty: 12
Rejestracja: 8 mar 2008, o 22:09
Płeć: Mężczyzna
Lokalizacja: bstok

[C] Rozklad sumy

Post autor: Garcia »

a gdzie to znalazles ???????? sa strony


Dzieki serdeczne !

Tyle szukałem a tu prosze

Klikam pomogł

[ Dodano: 11 Marca 2008, 15:55 ]
a tak na marginesie orientujesz do czego słuszy liczba k ?

Wiadomo n to liczba ktora chcemy rozlozyc a k ? Stopien jej rozlozenia ?


pozdro
ODPOWIEDZ