Da li bi mi neko mogao objasniti ove zadatke? Hvala unapred!
Z-domine & Z-clock
Primer iz teksta zadatka:
3927,273 = 1*3600 + 5*60 + 27,273
Znači u 1h 5m 27,273s poklopiće se kazaljke sata.
0 i 43200 su ponoć ili podne.
Znaš li igru domine?
3927,273 = 1*3600 + 5*60 + 27,273
Znači u 1h 5m 27,273s poklopiće se kazaljke sata.
0 i 43200 su ponoć ili podne.
Znaš li igru domine?
Z-domine. U zadatku dobiješ N parova brojeva i ti ih moraš tako poredati da tvore neku vrstu "lanca." 2. član prvog para mora biti 1. član drugog para. Primjer iz zadatka:
Input:
3
1 3
3 2
2 6
Output:
3
Možemo ovako parove složiti:
1 3 - 3 2 - 2 6
U prvom paru ( 1 3 ) drugi član je 3, to znači da u sljedećem paru ( 3 2 ) prvi član mora biti jednak 3.
Ti sada dobiješ N parova i moraš ih poredati tako da napravi najduži "lanac." Nadam se da si me shvatio, pitaj ako nije nesto jasno
Input:
3
1 3
3 2
2 6
Output:
3
Možemo ovako parove složiti:
1 3 - 3 2 - 2 6
U prvom paru ( 1 3 ) drugi član je 3, to znači da u sljedećem paru ( 3 2 ) prvi član mora biti jednak 3.
Ti sada dobiješ N parova i moraš ih poredati tako da napravi najduži "lanac." Nadam se da si me shvatio, pitaj ako nije nesto jasno
Ovo je moja ideja za Z-domine. Prodje mi poslednjih 5 primera a na prvih deset daje Wrong Result.
Sta se moze popraviti?
# include <iostream>
using namespace std;
int n,x[1000],y[1000],i,j,k,b1,b2;
int main ()
{
cin>>n;
for (i=1;i<=n;i++)
cin>>x[i]>>y[i];
k=1;
j=2;
b1=x[1];
b2=y[1];
while (j<=n)
{
if ((x[j]==b1)||(y[j]==b2))
{
k++;
b1=x[j];
b2=y[j];
j++;
}
else j++;
}
cout<<k<<endl;
system ("pause");
}
Sta se moze popraviti?
# include <iostream>
using namespace std;
int n,x[1000],y[1000],i,j,k,b1,b2;
int main ()
{
cin>>n;
for (i=1;i<=n;i++)
cin>>x[i]>>y[i];
k=1;
j=2;
b1=x[1];
b2=y[1];
while (j<=n)
{
if ((x[j]==b1)||(y[j]==b2))
{
k++;
b1=x[j];
b2=y[j];
j++;
}
else j++;
}
cout<<k<<endl;
system ("pause");
}
Ja neznam šta je meni krivo:
evo linka
http://www.z-trening.com/submit.php?submit=7100136689&subm_code=1
evo linka
http://www.z-trening.com/submit.php?submit=7100136689&subm_code=1
Z-domine se rade preko DFS
Ne kužim kako to rješit preko DFS-a, jel može neko objašnjenje?
# include <iostream>
# include <cstdio>
using namespace std;
int i,j,n,a,b,sol(0),k[7][7],sum(0);
void dfs (int pos)
{
int i;
sol=max(sol,sum);
for (i=0;i<7;i++)
if (k[pos][i])
{
k[pos][i]--;
k[i][pos]--;
sum++;
dfs(i);
sum--;
k[pos][i]++;
k[i][pos]++;
}
}
int main ()
{
scanf("%d",&n);
for (i=0;i<7;i++)
for (j=0;j<7;j++)
k[i][j]=0;
for (i=0;i<n;i++)
{
scanf("%d",&a);
scanf("%d",&b);
k[a][b]++;
k[b][a]++;
}
for (i=0;i<7;i++)
for (j=0;j<7;j++)
if (k[i][j])
{
k[i][j]--;
k[j][i]--;
sum=1;
dfs(j);
k[i][j]++;
k[j][i]++;
}
printf("%d",sol);
//system ("pause");
}
Eh, dobro nisam mislio direktan kod, nego neko objašnjenje.
Jel bi moglo kakvo objašnjenje kako si došao do ovog rješenja??
evo ja cu ti dati objasnjenje :D
Znaci ovde radis rekurziju, ali umesto da u rekrzivnoj funkciji trazis sledecu dominu tako sto ces ici po svim preostalim dominama i pokusavati svaku koja moze, ti lepo napravis niz k[ a ][ b ] -> koji ce drzati broj domina oblika [ a, b ] i onda u rekurzivnoj funkciji jednostavnom proverom da li je k[ ta ][ tb ] > 0, gde su ta i tb brojevi na trazenoj domini, saznajes da li ima domina tog oblika.
ukoliko ti nije jasno ovo sto sam napisao, probaj da ispratis moje objasnjenje uz kod koji je postavljen.
Znaci ovde radis rekurziju, ali umesto da u rekrzivnoj funkciji trazis sledecu dominu tako sto ces ici po svim preostalim dominama i pokusavati svaku koja moze, ti lepo napravis niz k[ a ][ b ] -> koji ce drzati broj domina oblika [ a, b ] i onda u rekurzivnoj funkciji jednostavnom proverom da li je k[ ta ][ tb ] > 0, gde su ta i tb brojevi na trazenoj domini, saznajes da li ima domina tog oblika.
ukoliko ti nije jasno ovo sto sam napisao, probaj da ispratis moje objasnjenje uz kod koji je postavljen.
Puno ti hvala!!!