back_rest
ex mod coder
- Член од
- 19 јули 2006
- Мислења
- 1.590
- Поени од реакции
- 107
Каква рекурзија не заебавај.Тоа го направив. Тоа не е проблемот. Сега ми го напиша полнењето на купчињата.
Е сега. Ми требаат сите можни позиции на објекти низ тие купчиња. Пример првото е полно прво со 9 објекти а второто со 5. После првото со 8 второто со 5 третото со 1, после 9 4 1, итн. После секое вакво преместување тие ќе се печатат (или ќе се повикува callback функција, тоа не е важно. или едноставно обична фикс функција не треба callback).
И самите објеки не се важни, туку само бројот на објекти во некое купче.
Значи наместо int kupchinja[4][9]; дефинираме само kupchinja[4];
За пример, почетокот нека е kupchinja[0] = 9; kupchinja[1] = 5; kupchinja[2] = 0; kupchinja[3] = 0;
Сега следува рекурзивен алгоритам.
9 5 0 0
8 5 1 0
7 5 1 1
6 5 1 2
5 5 1 3
4 5 1 4
3 5 1 5
2 5 1 6
1 5 1 7
0 5 1 8
0 4 1 9
0 3 2 9
0 2 3 9
0 1 4 9
0 0 5 9
Вака треба?
Еве во C++ на грубо.
Код:
int indFrom, indTo;
while (true) {
//ind from - prviot element > 0
for (int i=0; i<n; i++)
if (pole[i]>0) {
indFrom = i;
break;
}
//ind to posledniot 0 element ili prazno kupce
for (indTo=i; indTo<n; indTo++)
if (pole[indTo]==0) break;
ako e poln, idi nazad.
while (pole[indTo] < 9) indTo--;
if (indTo>indFrom){
pole[indFrom]--;
pole[indTo]++;
} else {
break;
}
for (int i=0; i<n; i++) cout << pole[i] << " ";
cout << endl;
}