Есть задача на с++
Разбиение числа от 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 секунд.
Все, что пыталась делать, не помогает. Не проходит быстрее :с
Разбиение числа от 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 секунд.
Все, что пыталась делать, не помогает. Не проходит быстрее :с