Pagini recente » Cod sursa (job #141594) | Cod sursa (job #1754870) | Cod sursa (job #60431) | Cod sursa (job #654175) | Cod sursa (job #19032)
Cod sursa(job #19032)
#include <stdio.h>
#include <string.h>
#define MAXN 515
#define MOD 9901
int N, seq[MAXN];
int nr[MAXN][MAXN];
int get( int l, int r )
{
if (nr[l][r] != -1)
return nr[l][r];
if (seq[l] != seq[r])
return nr[l][r] = 0;
if (l == r)
return nr[l][r] = 1;
nr[l][r] = get(l + 1, r - 1);
int i;
for (i = l + 1; i < r - 1; i++)
if (seq[i] == seq[l])
{
nr[l][r] += get(l + 1, i - 1) * get(i, r);
nr[l][r] %= MOD;
}
return nr[l][r];
}
int main()
{
freopen("culori.in", "rt", stdin);
freopen("culori.out", "wt", stdout);
scanf("%d", &N);
int i;
for (i = 0; i < N + N - 1; i++)
scanf("%d", seq + i);
memset( nr, -1, sizeof(nr) );
printf("%d\n", get(0, N + N - 2));
return 0;
}