Pagini recente » Cod sursa (job #2445451) | Cod sursa (job #1886366) | Cod sursa (job #1656171) | Cod sursa (job #1855273) | Cod sursa (job #88516)
Cod sursa(job #88516)
#include <stdio.h>
#define NMAX 512
long int a[NMAX],i,j,k,dp[NMAX][NMAX],x,y,n;
int main()
{
freopen("culori.in","r",stdin);
freopen("culori.out","w",stdout);
scanf("%ld",&n);
n=n*2-1;
for (i=1;i<=n;i++)
scanf("%ld ",&a[i]);
for (i=0;i<=n;i+=2)
{
for (j=1;j<=n;j++)
{
x=j;y=j+i;
if (x==y) {dp[x][y]=1;continue;}
if (a[x]!=a[y]) {dp[x][y]=0;continue;}
dp[x][y]=dp[x+1][y-1];
for (k=x+1;k<y;k++)
if (a[k]==a[x]) dp[x][y]=dp[x][y]+dp[x+1][k-1]*dp[k+1][y-1];
}
}
printf("%ld",dp[1][n]);
return 0;
}