快手内推

有如图所示的七巧板,试设计算法,使用至多4种不同的颜色对七巧板进行涂色(每块涂一种颜色),要求相邻区域的颜色互不相同,打印输出所有可能的涂色方案。

快手内推_第1张图片


算法设计:

1、使用邻接矩阵表示七巧板的相邻情况

2、使用蛮力法进行搜索


最终结果:

快手内推_第2张图片


代码:

#include 

using namespace std;

//三角板个数
const int n=7;
//邻接矩阵表,用来判断是否相邻
const int data[n][n] =
{
    {0,1,0,0,1,0,1},
    {1,0,0,1,0,1,0},
    {0,0,0,0,1,0,1},
    {0,1,1,0,0,1,1},
    {1,0,0,0,0,0,1},
    {0,1,0,1,0,0,0},
    {1,0,1,1,1,0,0}
};
//每个三角板的颜色
int color[n]= {0,0,0,0,0,0,0};

static int total;
void tryFind(int s);//查找涂色方案的递归
int colorSame(int s);//判断与周围的三角板颜色是否相同
void output();//输出涂色方案

int main()
{
    total=0;
    tryFind(0);
    cout<<"Total= "<


你可能感兴趣的:(【算法】)