Помогите упростить задачу на с++ - Вопросы по С+

Вопрос Помогите упростить задачу на с++

Регистрация
25 Сен 2013
Сообщения
92
Репутация
0
Спасибо
0
Монет
0
Есть задача на с++
Разбиение числа от 0 до 33 на слогаемые, позже все варианты сортируются в лексикографическом порядке.
Вот код:
#include (stdlib.h)
#include (iostream)
#include (stdio.h)

using namespace std;
#define N 33
int main()
{
FILE *input;
FILE *output;
input = fopen ("input.txt", "r");
output = fopen ("output.txt", "w");

int n,mas[N],dop;
for(int i=0;i<N;i++) mas=1;
scanf("%d",&n);
dop=n-1;

do
{

for(int i=0;i=mas[dop-1]+1 && dop>=1) mas[dop]--,mas[dop-1]++;
else{
mas[dop-1]+=mas[dop];
mas[dop--]=0;
}
} while(mas[0]!=0);
return 0;
}

Нужно сделать код как-то проще, чтобы время выполнения меньше было. Требования до 2 секунд.
Все, что пыталась делать, не помогает. Не проходит быстрее :с
 
Сверху Снизу