//对对碰,初始化算法
#include <iostream>
#include <stdio.h>
#include <time.h>
using namespace std;
const int BLOCKSIZE = 6;
int a[6][6]={
{0,0,0,0,0,0 },
{0,0,0,0,0,0 },
{0,0,0,0,0,0 },
{0,0,0,0,0,0 },
{0,0,0,0,0,0 },
{0,0,0,0,0,0 }
};
bool checkIsOK(int x,int y);
int main()
{
srand(time(0));
for (int i=0;i<6;i++)
{
for (int j=0;j<6;j++)
{
a[i][j]=rand()%7+1;
//确保初始化时产生的元素没有能消除的。
while (checkIsOK(i,j))
{
srand(time(0));
a[i][j]=rand()%7+1;
}
cout<<a[i][j];
}
cout<<endl;
}
return 0;
}
bool checkIsOK(int x,int y)
{
bool ok = false;
int i = x, j = x;
//向上查找
while (i > 0 && a[i - 1][y] == a[x][y])
i--;
//向下查找
while (j < BLOCKSIZE - 1 && a[j + 1][y] == a[x][y])
j++;
//如果横向有3个连续的则返回true
if (j - i >= 2)
{
// cout<<" ["<<i<<","<<y<<"]-->["<<j<<","<<y<<"] Cleared!"<<endl;
ok = true;
}
i = y;
j = y;
//向左走
while (i > 0 && a[x][i - 1] == a[x][y])
i--;
//向右走
while (j < BLOCKSIZE - 1 && a[x][j + 1] == a[x][y])
j++;
if (j - i >= 2)
{
// cout<<" ["<<x<<","<<i<<"]-->["<<x<<","<<j<<"] Cleared!"<<endl;
ok = true;
}
return ok;
}