sâmbătă, 8 septembrie 2018

Combinari n,k - programare dinamica

# include <conio.h>;
# include <iostream.h>;

# define MAX 50

int a,b;
int c[MAX][MAX];
int i,j;

int comb(int n,int k)
{
if(c[n][k]>=1) return c[n][k];
else
 {
  c[n][k]=comb(n-1,k)+comb(n-1,k-1);
  c[n][n-k]=c[n][k];
  return c[n][k];
 }
}

void main(void)
{
clrscr();

cout<<"Intr n,k :\n";
 cin>>a>>b;

for(i=0;i<a;i++)
 for(j=0;j<b;j++)
  c[i][j]=-1;

for(i=0;i<a;i++)
{
c[i][0]=1;
c[i][i]=1;
if(i>=1)
 {
 c[i][1]=i;
 c[i][i-1]=i;
 }
}

cout<<"\ncomb("<<a<<","<<b<<")= "<<comb(a,b);

getche();
}

Niciun comentariu:

Trimiteți un comentariu