Äàäåí å äâóìåðåí ìàñèâ ñ 3 ðåäà è 9 êîëîíè. Â ïúðâèòå 3 êîëîíè äà ñå
ðàçïîëîæàò â ñëó÷àåí ðåä ÷èñëàòà îò 1 äî 9. Âúâ âòîðèòå 3 êîëîíè îòíîâî äà ñå
ðàçïîëîæàò â ñëó÷àåí ðåä ÷èñëàòà îò 1 äî 9.  òðåòèòå – ñúùî. Ïðè òîâà
ðàçïîëàãàíå âúâ âñåêè ðåä òðÿáâà äà ñå ñðåùàò âñè÷êè ÷èñëà îò 1 äî 9 òî÷íî ïî
âåäíúæ.
Ïðèìåð:
|
1 |
3 |
5 |
4 |
7 |
6 |
9 |
8 |
2 |
|
9 |
2 |
7 |
5 |
1 |
8 |
4 |
6 |
3 |
|
4 |
6 |
8 |
9 |
2 |
3 |
5 |
1 |
7 |
Ðåøåíèå:
#include
<iostream.h>
#include
<stdlib.h>
#include
<time.h>
void init_mas(int mas[3][9]) //íóëèðàíå íà ìàñèâà, îïèñâàù
òàáëèöàòà
{
int i,j;
for(i=0;i<3;i++)
for(j=0;j<9;j++)
mas[i][j]=0;
}
void main(void)
{
int k,r,col,br_col,block,flag,j; //ê – òåêóùîòî ÷èñëî,
íà êîåòî òúðñèì ìÿñòîòî â ìàñèâà
//r,col – íîìåð
íà ðåä è êîëîíà â òàáëèöàòà
// br_col – áðîé ïîïúëíåíè áëîêîâå ñ
òåêóùîòî ÷èñëî
//block – íîìåð íà áëîê
çà ïîïúëâàíå
//flag – ôëàã çà óñïåøåí çàïèñ
//j – ïîìîùíà çà îáõîæäàíå íà block_free
int mas[3][9]; //ìàñèâ, îïèñâàù
òàáëèöàòà
int block_free[3]; //ìàñèâ,
îïèñâàù âñåêè åäèí áëîê; ñò-ñò 0 – ëèïñà íà
çàïèñ; 1 – èìà çàïèñ íà òåêóùîòî ÷èñëî
init_mas(mas);
srand( (unsigned)time( NULL ) );//íà÷àëíî èíèöèàëèçàöèÿ íà ãåíåðàòîðà íà
ñëó÷àéíè ÷èñëà
//öèêúë çà ê – ÷èñëàòà ñ
êîèòî ñå ïîïúëâà ìàñèâà
for(k=1;k<=9;k++)
{
//íóëèðàíå íà ïîìîùíèÿ ìàñèâ, îïèñâàù äàëè áëîêúò
å çàåò ñ ÷èñëîòî ê
for(j=0;j<3;j++) block_free[j]=0;
for(r=0;r<3;r++) //ïîñëåäîâàòåëíî îáõîæäàíå
íà ðåäîâåòå
{
block=rand()%3; //çà
âñåêè ðåä ñå èçáèðà áëîê, â êîéòî äà ñå çàïèøå ê
do{
while(block_free[block]==1) block=++block%3; //äîêàòî
íå ñå íàìåðè ñâîáîäåí áëîê
flag=0;
col=rand()%3; //èçáîð
íà êîëîíà â áëîêà - îòíîñèòåëåí íîìåð îò 0 äî 2
for(br_col=0;br_col<3;br_col++) //áðîè êîëêî êîëîíè ñà
ïîïúëíåíè â áëîêà
{
if(mas[r][block*3+col]!=0) col=++col%3; //àêî êëåòêàòà
íà ðåä r è èçáðàíàòà êîëîíà å çàåòà, ñå ïðåìèíàâà êúì
ñëåäâàùàòà êëåòêà íà ðåäà è â áëîêà
else{
mas[r][block*3+col]=k; //çàïèñ íà ê â êëåòêàòà
block_free[block]=1; //ìàðêèðàíå, ÷å áëîêúò å çàåò
flag=1; //óñïåøåí
çàïèñ
break;
}
}
block=++block%3; //ñëåäâàù
áëîê
}while (flag==0); //àêî
çàïèñúò å óñïåøåí ñå ïðåìèíàâà êúì ñëåäâàùèÿ ðåä
}
}
//èçâåæäàíå íà ìàñèâà
for(r=0;r<3;r++)
{
for(col=0;col<9;col++)
cout<<mas[r][col]<<" ";
cout<<'\n';
}
}