Rezultati II testa
Rezultati drugoga testa iz Teorije algoritama
Indeks |
Student |
Pr PG |
Pr1 |
Test 1 |
T1Tot |
Pr2 |
Test 2 |
T2Tot |
Total |
03/2021 |
Golubović Zagorka |
3 |
3 |
|
5 |
2 |
11.1 |
13.1 |
18.1 |
1/2022 |
Ašanin Ana |
|
3.5 |
4.9 |
8.4 |
2 |
17.9 |
19.9 |
28.3 |
2/2022 |
Slavić Vuk |
|
5 |
23.1 |
28.1 |
3 |
23.8 |
26.8 |
54.9 |
3/2022 |
Vujačić Danilo |
|
5 |
8.2 |
13.2 |
3 |
10.6 |
13.6 |
26.8 |
5/2022 |
Dopuđa Aleksa |
|
5 |
10.3 |
15.3 |
3 |
16.7 |
19.7 |
35 |
6/2022 |
Kažić Luka |
|
4 |
9.8 |
13.8 |
3 |
12.6 |
15.6 |
29.4 |
7/2022 |
Vučković Tamara |
|
3 |
9.8 |
12.8 |
3 |
11.2 |
14.2 |
27 |
8/2022 |
Vuksanović Lidija |
|
4.5 |
10.7 |
15.2 |
3 |
17.5 |
20.5 |
35.7 |
10/2022 |
Vukčević Aleksej |
|
3 |
5.1 |
8.1 |
2 |
15.5 |
17.5 |
25.6 |
11/2022 |
Avdović Tarik |
|
5 |
9.6 |
14.6 |
3 |
19.5 |
22.5 |
37.1 |
13/2022 |
Spaić Martin |
|
5 |
6.9 |
11.9 |
3 |
25.9 |
28.9 |
40.8 |
1019/23 |
Obradović Goran |
|
|
|
0 |
2 |
8.6 |
10.6 |
0 |
Moguća realizacija trećeg zadatka je data u prilogu. Radiće za 20 nula u matrici ali neće za 23-24 već će početi da se osjeća eksponencijalni rast složenosti. Inteligentnija implementacija je potrebna za dalje unaprijeđenje. Veliki problem u studentskim radovima je predstavljala činjenica da se ne provjeravaju vrste i kolone za jedinstvenost upisa. Jedinstvenost se provjerava na nivou čitave matrice a sume na nivoima redova, kolona i dijagonala!
Urađeno je tek malkice bolje nego prvi test.
Nažalost najveći broj izrada je rješavao neke zadatke koji su zamišljeni a nisu bili postavljeni!?
Postoji znatna mogućnost pogreški u pregledanju zbog raznih pristupa i nečitljivog koda pa ćemo oko toga na pauzama časova predavanja (ili nakon predavanja) u četvrtak.
PREDMETNI NASTAVNIK
#include #include using namespace std; struct koordinate {int x,y;}; bool provjera(int mat[][5],int n,int suma,int x,int y) { int s=0,br=0; for(int j=0;j<n;j++) { s+=mat[x][j]; if(mat[x][j]) br++; } if(s>suma || (s!=suma && br==n)) return false; s=0;br=0; for(int i=0;i<n;i++) { s+=mat[i][y]; if(mat[i][y]) br++; } if(s>suma || (s!=suma && br==n)) return false; if(x==y){ s=0;br=0; for(int i=0;i<n;i++) { s+=mat[i][i]; if(mat[i][i]) br++; } if(s>suma || (s!=suma && br==n)) return false; } if(x==n-y-1){ s=0;br=0; for(int i=0;i<n;i++) { s+=mat[i][n-i-1]; if(mat[i][n-i-1]) br++; } if(s>suma || (s!=suma && br==n)) return false; } return true; } bool dodaj (int mat[][5],bool IND[],int x,int y,int n,int suma,int poc) { for(int k=poc;k<=n*n;k++) { if(!IND[k-1]){ mat[x][y]=k; IND[k-1]=true; if(provjera(mat,n,suma,x,y)) return true; mat[x][y]=0; IND[k-1]=false; } } return false; } int main() { int n; cin>>n; int mat[n][5],suma=(n*(n*n+1))/2; bool IND[n*n],uspjeh; stack sk; koordinate temp; for(int i=0;i<n*n;i++) IND[i]=false; for(int i=0;i<n;i++) for(int j=0;j<n;j++) {cin>>mat[i][j]; if(mat[i][j]) IND[mat[i][j]-1]=true;} int i=0,j=0,poc=1; bool napolje=false; do { if(mat[i][j] && j==n-1){ j=0; i++; } else if(mat[i][j] && j!=n-1)j++; else { uspjeh=dodaj(mat,IND,i,j,n,suma,poc); if(uspjeh){ temp.x=i; temp.y=j; sk.push(temp); poc=1; if(j==n-1) { j=0; i++; } else j++; } else if(!sk.empty()) { temp=sk.top(); sk.pop(); i=temp.x; j=temp.y; poc=mat[i][j]+1; IND[mat[i][j]-1]=false; mat[i][j]=0; } else napolje=true; } }while(i
Test primjer:
4
0 0 0 13
0 11 0 0
0 0 0 0
0 0 15 0
Rezultat:
3 16 2 13
14 11 5 4
7 6 12 9
10 1 15 8