Titlul: Din C++ in Pascal
Scris de: Muntean Lucian din Martie 20, 2014, 14:34:03
Salut! Cine ma poate ajuta cu o rescriere al acestui algoritm in pascal? Manualul il prezinta in C++ dar la scoala studiem pascal. #include<cstdio> int a[19],b[19]; void back(int k,int len,int max) { if(k-1 == max) //afisam solutia { for(int i = 1; i <= max;i++) printf("%d ",a[i]); printf("\n"); } else { for(int i = 1; i <= len; i++) if(!b[i] && a[k-1] < i) //ne asiguram ca generam solutiile crescatoare si unice { a[k] = i; b[i] = 1; //o folosim back(k+1,len,max); //trecem la pasul urmator b[i] = 0; //o eliberam } } } int main() { freopen("combinari.in","r",stdin); freopen("combinari.out","w",stdout); int n,k; scanf("%d %d",&n,&k); back(1,n,k); fclose(stdin); fclose(stdout); return 0; } Multumesc anticipat!
Titlul: Răspuns: Din C++ in Pascal
Scris de: Muntean Lucian din Martie 20, 2014, 15:31:26
Adaptarea facuta de mine, pare sa functioneze: type sir=array[1..100]of integer; int=integer; var a,b:sir; n,k,max:int; procedure tip(max:int;a:sir); var i:int; begin for i:=1 to max do write(a[i],' '); end;
procedure aranj(k,len,max:int); var i:int; begin if (k-1) = max then begin tip(max,a); writeln; end else for i:=1 to len do if (a[k-1] >= i) then begin a[k]:=i; b[i]:=1; aranj(k+1,len,max); b[i]:=0; end; end; Begin{PP} readln(n,k); aranj(1,n,k); End.
|