Pagini recente » Cod sursa (job #1643957) | Cod sursa (job #1438434)
#include <fstream>
using namespace std;
ifstream in("football.in");
ofstream out("football.out");
int S, T, moduri[30];
// moduri[i] == in cate moduri poate fi scris i
// ca suma de 1, 2, 3, 6
/*void genereazaModuri() {
moduri[1] = moduri[2] = moduri[3] = moduri[6] = 1;
for(int i = 2; i <= 25; i++) {
if(i - 1 > 0)
moduri[i] += moduri[i-1];
if(i - 2 > 0)
moduri[i] += moduri[i-2];
if(i - 3 > 0)
moduri[i] += moduri[i-3];
if(i - 6 > 0)
moduri[i] += moduri[i-6];
}
}*/
int P[] = {1, 2, 3, 6};
int nr;
void backtrack(int c, int S) {
if (c == S) {
++nr;
return;
}
for (int i=0; i<4; ++i)
if (c+P[i]<=S) backtrack(c+P[i], S);
}
int main()
{
// genereazaModuri();
in >> T;
for(int i = 1; i <= T; i++) {
in >> S;
nr = 0;
backtrack(0, S);
out << "Case " << i << ": " << nr << endl;
}
return 0;
}