Pagini recente » Cod sursa (job #2867188) | Cod sursa (job #195337) | Cod sursa (job #1501983) | Cod sursa (job #2427036) | Cod sursa (job #22662)
Cod sursa(job #22662)
#include <stdio.h>
#include <string>
#define NMAX 2*256
int N;
int C[NMAX];
int A[NMAX][NMAX];
void calc(int i, int j)
{
if (C[i] != C[j])
{
A[i][j] = 0;
return;
}
int S = 0;
if (j<=i)
{
if (j==i)
A[i][j] = 1;
else
A[i][j] = 0;
return;
}
for (int k = i+1; k<j; ++k)
{
if (C[i+1] == C[k])
{
if (!A[i+1][k])
calc(i+1,k);
if (!A[k+1][j])
calc(k+1,j);
S += A[i+1][k]*A[k+1][j];
}
}
A[i][j] = S;
}
int main()
{
freopen("culori.in", "r", stdin);
freopen("culori.out", "w", stdout);
memset(A, 0, sizeof(A));
scanf("%d", &N);
for (int i = 1; i<=2*N-1; ++i)
{
scanf("%d", &C[i]);
}
calc(1, 2*N-1);
printf("%d\n", A[1][2*N-1]);
}