Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- using namespace std;
- //step==8 elementi da saltare per arrivare a riga dopo della colonna j (j=0...8); n indica il numero di righe con elementi (anche degli strati sucessivi)
- int colonna(int X[],int n, int step);
- int colonna (int* A, int n, int step)
- {
- int somma=0;
- for (int i=0; i<n; i++ )
- somma+=A[i*step];
- return somma;
- }
- //dobbiamo ritornare la somma per la colonna j
- //PRE=(cin contiene n_ele, 0<n_ele<=400, seguito da n_ele interi qualsiasi)
- main()
- {
- int A[10][5][8], *p=A[0][0];
- int n_ele;
- cin>>n_ele;
- for(int i=0; i<n_ele; i=i+1)
- cin>>p[i];
- cout<<"start"<<endl;
- int bestvalue=0, bestfetta=-1;
- // num_strato*40+num_riga*8+ num_colonna<n_ele
- //calcolo strati pieni, righe piene e colonne piene
- int sp=n_ele/40;
- int rp=(n_ele%40)/8;
- int cp=(n_ele%40)%8;
- // per ogni colonna calcolo la somma e metto in bestvalue; se i>=n_ele vuol dire che che la prima riga del primo strato non è piena
- // La somma sarà data quindi dal singolo elemente fintanto che i<n_ele
- for (int i=0; i<8 && i<n_ele; i++)
- {
- //righe contiene il numero totale delle righe piene di tutti gli strati + eventualmente una riga in più se c'è un elemento nella riga mezzapiena (la sucessiva)
- int righe=sp*5+rp, somma=0;
- if(cp && cp>i )
- righe++;
- somma=colonna(A[0][0]+i, righe, 8);
- if(!bestvalue)
- {
- bestvalue=somma;
- bestfetta=i;
- }
- else
- if(bestvalue<=somma)
- {
- bestvalue=somma;
- bestfetta=i;
- }
- }
- cout<<"V-fetta massima= "<<bestfetta<<" con somma= "<<bestvalue<<endl;
- cout<<"end"<<endl;
- }
- //POST=(stampa l'indice della V-fetta a somma massima seguito dalla sua somma e in caso di parità, stampa l'indice massimo)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement