Afişează mesaje
|
Pagini: [1]
|
14
|
infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Hint la problema cu Dinamica!
|
: Iunie 24, 2015, 17:05:38
|
Construiesti o matrice best[ i ][ j ] - suma maxima a unui sir care se termina pe pozitia (i, j) best[i][1] = a[i][1] (prima coloana)
best[i][j] = a[i][j] + max(best[i-1][j-1], best[i][j-1], best[i+1][j-1]) parcurgerea se face pe coloane, nu pe linii raspunsul este maximul dintre best[ i ][ n ], 1<=i<=n pentru reconstituire trebuie o matrice auxiliara, pred[ i ][ j ] care retine linia elementului precedent celui de pe pozitia (i, j)
|
|
|
20
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 002 Jocul Flip
|
: Februarie 22, 2014, 16:50:50
|
using namespace std; #include <fstream> #include <vector> ifstream fin("flip.in"); ofstream fout("flip.out");
int m, n, max1=0; // n linii m coloane int l[16]; int t[16][16]; vector <bool> v(17, 0);
int main() { int i, j, k, gata=0, s, s1; fin>>m>>n; for(i=0; i<n; i++) for(j=0; j<m; j++) {fin>>t[i][j]; l[i]+=t[i][j];} while(!gata) { s=0; for(j=0; j<m; j++) { //calculam fiecare coloana s1=0; for(i=0; i<n; i++) if(v[i]==1) s1-=t[i][j]; else s1+=t[i][j]; if(s1<0) s1=-s1; s+=s1; } if(s>max1) max1=s; for(i=n-1; i>=0 && v[i]==1; i--) v[i]=0; if(i>=0) v[i]=1; else gata=1; } fout<<max1; return 0; } imi da 50 puncte si nu stiu unde gresesc, o idee?
|
|
|
|