Pagini recente » Cod sursa (job #1867308) | Cod sursa (job #2703942) | Cod sursa (job #1599625) | Cod sursa (job #1103990) | Cod sursa (job #19350)
Cod sursa(job #19350)
#include <stdio.h>
#define N_MAX 513
int n,c[N_MAX],a[N_MAX][N_MAX];
void citire(){
FILE *fin=fopen("culori.in","r");
fscanf(fin,"%d",&n);
for (int i=1;i<=2*n-1;i++)
fscanf(fin,"%d",&c[i]);
fclose(fin);
}
int memoizare(int x,int y){
if (x==y){
a[x][x]=1;
return 1;
}
if (c[x]!=c[y]||(x+y)%2)
return 0;
if (a[x][y])
return a[x][y];
for (int k=x+1;k<y;k++)
a[x][y]+=memoizare(x+1,k)*memoizare(k+1,y);
return a[x][y];
}
void afisare(){
FILE *fout=fopen("culori.out","w");
fprintf(fout,"%d\n",a[1][2*n-1]);
fclose(fout);
}
int main(){
citire();
memoizare(1,2*n-1);
afisare();
return 0;
}