Pagini recente » Cod sursa (job #1711779) | Cod sursa (job #2479896) | Cod sursa (job #2116372) | Cod sursa (job #2390466) | Cod sursa (job #18263)
Cod sursa(job #18263)
#include <stdio.h>
#define MOD 9901
#define NMAX 600
int N;
int a[NMAX];
int nr[NMAX][NMAX];
char viz[NMAX][NMAX];
int calc(int x, int y)
{
if (viz[x][y]) return nr[x][y];
if (x > y) return 0;
viz[x][y] = 1;
if (a[x] != a[y]) return 0;
if (x == y) return nr[x][y] = 1;
nr[x][y] = calc(x + 1, y - 1);
int i;
for (i = x + 1; i <= y - 1; i++)
if (a[i] == a[x]) {
nr[x][y] += calc(x + 1, i - 1) * calc(i, y);
nr[x][y] %= MOD;
}
return nr[x][y];
}
int main()
{
int i;
freopen("culori.in", "r", stdin);
freopen("culori.out", "w", stdout);
scanf("%d", &N);
for (i = 1; i < 2 * N; i++) scanf("%d", &a[i]);
printf("%d\n", calc(1, 2 * N - 1));
fclose(stdin);
fclose(stdout);
return 0;
}