Napisano: 16 Jan 2015 21:38
Je l mozete da mi prevedete ovo u Pascal, kapiram u sustini xD sta program radi, ali ne snalazim se u c-u... ?
int n, m;
vector < vector<long long> > d;
void calc (int x = 0, int y = 0, int mask = 0, int next_mask = 0)
{
if (x == n)
return;
if (y >= m)
d[x+1][next_mask] += d[x][mask];
else
{
int my_mask = 1 << y;
if (mask & my_mask)
calc (x, y+1, mask, next_mask);
else
{
calc (x, y+1, mask, next_mask | my_mask);
if (y+1 < m && ! (mask & my_mask) && ! (mask & (my_mask << 1)))
calc (x, y+2, mask, next_mask);
}
}
}
int main()
{
cin >> n >> m;
d.resize (n+1, vector<long long> (1<<m));
d[0][0] = 1;
for (int x=0; x<n; ++x)
for (int mask=0; mask<(1<<m); ++mask)
calc (x, 0, mask, 0);
cout << d[n][0];
}
Dopuna: 16 Jan 2015 21:39
Citat:Tokom iskopavanja arheolozi su pronašli čudan kovčeg i puno jednakih delova kostiju veličine 1x2. Zaključili su da za otvaranje kovčega treba da se pravougaoni poklopac kovčega pokriju kostima na određeni način. Delovi ne smeju da se preklapaju niti da seku ivice kovčega. Potrebno je odrediti broj načina da se kosti poređaju.
input:
dužina i širina poklopca
output:
broj rešenja
primer:
input output
3 4 11
evo i tekst ako je od koristi
|