Pagini recente » Cod sursa (job #393359) | Cod sursa (job #2632218) | Cod sursa (job #71201) | Cod sursa (job #1360079) | Cod sursa (job #2658933)
#include <fstream>
///90 de puncte
using namespace std;
using namespace std;
ifstream f("partitii.in");
ofstream g("partitii.out");
int n, x[51];
void afis(int k) ///k numere in partitie
{
static char buf[111];
int p = 0;
for(int i = 1; i <= k; i++)
{
p += sprintf(buf + p, "%d ", x[i]);
}
buf[p++] = '\n';
buf[p] = 0;
g << buf;
}
void BT(int k, int s)
{
if(s < n)
for(int i = min(x[k - 1], n - s); i >= 1; i--) ///(*)
{
x[k] = i;
BT(k + 1, s + i);
}
else ///s==n
afis(k - 1);
}
int main()
{
f >> n;
x[0] = n; ///artificiu pentru (*)
BT(1, 0);
return 0;
}