am incercat sa fac problema medii de pe arhiva campion : ,dar am luat doar 20 de puncte
#include <fstream> using namespace std; ifstream fin("medii.in"); ofstream fout("medii.out"); int x[20],nt; float med,mn,sp; void afis(int n) { int j; for(j=1;j<=n;j++) fout<<x[j]<<" "; fout<<endl; } void back(int k) { if(sp/(k-1)==mn){if(k>3)afis(k-1);} else if(k<=10) for(int i=x[k-1];i<=10;i++) { x[k]=i; if((sp+i)/k<=mn) { sp+=i; back(k+1); sp-=i; } } } int main() { fin>>med>>nt; mn=(4*med-nt)/3; x[0]=1; back(1); }
nu imi dau seama unde am gresit[/code]
Incearca sa folosesti citire si scriere standard din C… (deschide fisierele asha freopen(numefisier,r/w,stdin/out)…citesti direct cu scanf si afisezi totul cu printf normal.) si renunta la functia afisare, afisand direct in functia back. Incearca sa renuntzi si la float-uri ingreuneaza mult executia… dupa ce faci aceste modificari sa ma anuntzi de rezultat! sa vedem daca mai e ceva de facut. Incearca sa nu mai faci operatii in +.
problema pentru mine nu este timpul de executie, ci faptul ca nu afiseaza corect pe unele cazuri.eu cred ca nu face corect, aproximarile la impartiri, compilatorul.
Prietene… se pare ca vorbim impreuna si ne intelegem separat. Renunta la variabilele de tip float… lucreaza in loc de fractii rationale : cu produs de mezi egal produs de extremi si alte smecherii de acolo se trage lipsa preciziei.