Si vuole realizzare un parco verde all’interno di un’area quadrata recintata di 81 mq. Al fine di distribuire correttamente gli alberi, per un totale di 9 pini, si chiede di posizionarli secondo i seguenti criteri:
- ciascun albero non può essere piantato sul perimetro del recinto(escludere le zone perimetrali del parco);
- ciascun albero non può essere piantato vicino ad un altro albero;
I criteri 1 e 2 devono essere verificati contemporaneamente.
Tramite l’utilizzo di una matrice 9×9, implementare un algoritmo risolutivo in C++ che permetta di generare in modo casuale una delle possibili combinazioni per la disposizione degli alberi. Si indichi con 1 la cella che contiene l’ albero e con 0 quella in cui non è presente.
Esempio:
#include “stdafx.h”
#include<ctime>
#include<iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{int mat[9][9];
int j,k,i=0;
for(j=0;j<9;j++)
{
for(k=0;k<9;k++)
{ mat[j][k]=0;
}
}
i=0;
srand((unsigned)time(NULL));
while(i<9)
{
j = rand() % 8 +1 ;
k = rand() % 8 +1 ;
if(mat[j-1][k-1]!=1 && mat[j][k-1]!=1 && mat[j+1][k-1]!=1 && mat[j-1][k]!=1 && mat[j+1][k]!=1 && mat[j-1][k+1]!=1 && mat[j][k+1]!=1 && mat[j+1][k+1]!=1 && mat[j][k]!=1 && j!=8 && k!=8 && j!=0 && k!=0)
{
mat[j][k]=1;
i++;
}
}
for(j=0;j<9;j++)
{
for(k=0;k<9;k++)
{
cout<<mat[j][k];
}
cout<<endl;
}
system(“pause”);
return 0;
}