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:

  1. ciascun albero non può essere piantato sul perimetro del recinto(escludere le zone perimetrali del parco);
  2. 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:

matrice

 

#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;

}