#320
PartitiiNumar
Se dă un număr natural n
. Determinaţi, în ordine lexicografică, toate modalităţile de a-l scrie pe n
ca sumă de numere naturale.
Problema | PartitiiNumar | Operații I/O |
partitiinumar.in /partitiinumar.out
|
---|---|---|---|
Limita timp | 0.5 secunde | Limita memorie |
Total: 64 MB
/
Stivă 8 MB
|
Id soluție | #16099562 | Utilizator | |
Fișier | partitiinumar.cpp | Dimensiune | 662 B |
Data încărcării | 03 Iunie 2019, 17:25 | Scor / rezultat | 100 puncte |
partitiinumar.cpp: In function 'int afisare(int)': partitiinumar.cpp:6:42: warning: no return statement in function returning non-void [-Wreturn-type] printf("%d ", x[i]); printf("\n");}bool cont(int k){ s = 0; if(x[k] < x[k - 1]) return 0; for(int i = 1; i <= k; i ++) s = s + x[i]; if(s <= n) return 1; return 0;}int backtracking(int k){ if(s == n) afisare(k - 1); for(int i = 1; i <= n - k + 1; i ++) { x[k] = i; if(cont(k)) backtracking(k + 1); }}int main(){ freopen("partitiinumar.in", "r", stdin); freopen("partitiinumar.out", "w", stdout); scanf("%d", &n); backtracking(1); return 0;} ^ partitiinumar.cpp: In function 'int backtracking(int)': partitiinumar.cpp:6:366: warning: no return statement in function returning non-void [-Wreturn-type] printf("%d ", x[i]); printf("\n");}bool cont(int k){ s = 0; if(x[k] < x[k - 1]) return 0; for(int i = 1; i <= k; i ++) s = s + x[i]; if(s <= n) return 1; return 0;}int backtracking(int k){ if(s == n) afisare(k - 1); for(int i = 1; i <= n - k + 1; i ++) { x[k] = i; if(cont(k)) backtracking(k + 1); }}int main(){ freopen("partitiinumar.in", "r", stdin); freopen("partitiinumar.out", "w", stdout); scanf("%d", &n); backtracking(1); return 0;} ^ partitiinumar.cpp: In function 'int main()': partitiinumar.cpp:6:421: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result] printf("%d ", x[i]); printf("\n");}bool cont(int k){ s = 0; if(x[k] < x[k - 1]) return 0; for(int i = 1; i <= k; i ++) s = s + x[i]; if(s <= n) return 1; return 0;}int backtracking(int k){ if(s == n) afisare(k - 1); for(int i = 1; i <= n - k + 1; i ++) { x[k] = i; if(cont(k)) backtracking(k + 1); }}int main(){ freopen("partitiinumar.in", "r", stdin); freopen("partitiinumar.out", "w", stdout); scanf("%d", &n); backtracking(1); return 0;} ^ partitiinumar.cpp:6:467: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result] printf("%d ", x[i]); printf("\n");}bool cont(int k){ s = 0; if(x[k] < x[k - 1]) return 0; for(int i = 1; i <= k; i ++) s = s + x[i]; if(s <= n) return 1; return 0;}int backtracking(int k){ if(s == n) afisare(k - 1); for(int i = 1; i <= n - k + 1; i ++) { x[k] = i; if(cont(k)) backtracking(k + 1); }}int main(){ freopen("partitiinumar.in", "r", stdin); freopen("partitiinumar.out", "w", stdout); scanf("%d", &n); backtracking(1); return 0;} ^ partitiinumar.cpp:6:487: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result] printf("%d ", x[i]); printf("\n");}bool cont(int k){ s = 0; if(x[k] < x[k - 1]) return 0; for(int i = 1; i <= k; i ++) s = s + x[i]; if(s <= n) return 1; return 0;}int backtracking(int k){ if(s == n) afisare(k - 1); for(int i = 1; i <= n - k + 1; i ++) { x[k] = i; if(cont(k)) backtracking(k + 1); }}int main(){ freopen("partitiinumar.in", "r", stdin); freopen("partitiinumar.out", "w", stdout); scanf("%d", &n); backtracking(1); return 0;} ^
Test | Timp | Mesaj evaluare | Scor posibil | Scor obținut | ||
---|---|---|---|---|---|---|
1 | 0 secunde | OK. | 20 | 20 | Exemplu | |
2 | 0 secunde | OK. | 20 | 20 | ||
3 | 0 secunde | OK. | 20 | 20 | ||
4 | 0.008 secunde | OK. | 20 | 20 | ||
5 | 0.092 secunde | OK. | 20 | 20 | ||
Punctaj total | 100 |
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema PartitiiNumar face parte din prima categorie. Soluția propusă de tine va fi evaluată astfel:
Suma punctajelor acordate pe testele utilizate pentru verificare este 100. Astfel, soluția ta poate obține cel mult 100 de puncte, caz în care se poate considera corectă.