Scrivere un programma che presa in
input la dimensione della scacchiera ed una casella della scacchiera, sia essa C, calcoli
il minimo numero di mosse che un cavallo posizionato in C necessita per raggiungere
TUTTE le altre caselle.
#include <stdio.h>
void cavallo(int N, int matrice[][N]);
int main()
{
int N=0;
int i=0;
int j=0;
int riga=0;
int colonna=0;
scanf("%d",&N);
int matrice[N][N];
scanf("%d",&riga);
scanf("%d",&colonna);
for(i=0; i<N; i++)
for(j=0; j<N; j++)
matrice[i][j] = 0;
matrice[riga][colonna] = 0;
int a=riga;
int b=colonna;
if(matrice[a+2][b+1] == 0 && (a+2)<N && (b+1)<N)
matrice[a+2][b+1] = matrice[riga][colonna] + 1;
if (matrice[a+1][b+2] == 0 && (a+1)<N && (b+2)<N)
matrice[a+1][b+2] = matrice[riga][colonna] + 1;
if (matrice[a-1][b-2] == 0 && (a-1)>=0 && (b-2)>=0)
matrice[a-1][b-2] = matrice[riga][colonna] + 1;
if (matrice[a-2][b-1] == 0 && (a-2)>=0 && (b-1)>=0)
matrice[a-2][b-1] = matrice[riga][colonna] + 1;
if (matrice[a-1][b+2] == 0 && (a-1)>=0 && (b+2)<N)
matrice[a-1][b+2] = matrice[riga][colonna] + 1;
if (matrice[a+1][b-2] == 0 && (b-2)>=0 && (a+1)<N)
matrice[a+1][b-2] = matrice[riga][colonna] + 1;
if (matrice[a+2][b-1] == 0 && (b-1)>=0 && (a+2)<N)
matrice[a+2][b-1] = matrice[riga][colonna] + 1;
if (matrice[a-2][b+1] == 0 && (a-2)>=0 && (b+1)<N)
matrice[a-2][b+1] = matrice[riga][colonna] + 1;
cavallo(N, matrice);
matrice[riga][colonna] = 0;
for(i=0; i<N; i++)
{
for(j=0; j<N; j++)
{
printf("%d ",matrice[i][j]);
}
printf("n");
}
return 0;
}
void cavallo(int N, int matrice[][N])
{
int i=0;
int j=0;
int a=0;
int b=0;
int M=0;
M=N*N;
int star=1;
while(M>0)
{
a=0;
for(i=0; i<N; i++, a++)
{
b=0;
for(j=0; j<N; j++, b++)
{
if (matrice[i][j] != 0 && matrice[i][j] == star)
{
if(matrice[a+2][b+1] == 0 && (a+2)<N && (b+1)<N)
matrice[a+2][b+1] = matrice[i][j] + 1;
if (matrice[a+1][b+2] == 0 && (a+1)<N && (b+2)<N)
matrice[a+1][b+2] = matrice[i][j] + 1;
if (matrice[a-1][b-2] == 0 && (a-1)>=0 && (b-2)>=0)
matrice[a-1][b-2] = matrice[i][j] + 1;
if (matrice[a-2][b-1] == 0 && (a-2)>=0 && (b-1)>=0)
matrice[a-2][b-1] = matrice[i][j] + 1;
if (matrice[a-1][b+2] == 0 && (a-1)>=0 && (b+2)<N)
matrice[a-1][b+2] = matrice[i][j] + 1;
if (matrice[a+1][b-2] == 0 && (b-2)>=0 && (a+1)<N)
matrice[a+1][b-2] = matrice[i][j] + 1;
if (matrice[a+2][b-1] == 0 && (b-1)>=0 && (a+2)<N)
matrice[a+2][b-1] = matrice[i][j] + 1;
if (matrice[a-2][b+1] == 0 && (a-2)>=0 && (b+1)<N)
matrice[a-2][b+1] = matrice[i][j] + 1;
}
}
}
star++;
M--;
}
}
Ricerca appunti sul web
Ricerca personalizzata
sabato 28 febbraio 2009
Sorgenti c : Cavallo
Pubblicato da Baiox alle 00:33
Etichette: Informatica, Programmazione C
Iscriviti a:
Commenti sul post (Atom)
0 commenti:
Posta un commento