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