给你一个3*3的矩阵,请你给矩阵上色。其中有红绿蓝三种颜色可以选择,要求是相邻的两个点之间不能选择同一种颜色。问总共有几种上色方式?
用三进制的数组记录,然后暴力,没错就是这么粗暴
代码如下:
#include#include #include #include using namespace std;int map[3][3];void trans(int x,int y){ map[y][0] = x%3; int a = (x - x%3)/3; map[y][1] = a%3; map[y][2] = a/3;}int judge(){ int flag = 1; for(int i = 0;i<3;i++) { for(int j = 0;j<3;j++) { if(i>0 && map[i][j] == map[i-1][j]) flag = 0; if(j>0 && map[i][j] == map[i][j-1]) flag = 0; if(i<2 && map[i][j] == map[i+1][j]) flag = 0; if(j<2 && map[i][j] == map[i][j+1]) flag = 0; if(flag == 0) break; } if(flag == 0) break; } return flag;}int main(){ int sum = 0; for(int i = 0;i<27;i++) { for(int j = 0;j<27;j++) { for(int k = 0;k<27;k++) { trans(i,0); trans(j,1); trans(k,2); if(judge()) { sum++; } } } } cout<