博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
跟状压的思想很像
阅读量:4978 次
发布时间:2019-06-12

本文共 924 字,大约阅读时间需要 3 分钟。

给你一个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<

转载于:https://www.cnblogs.com/acer1238/p/9165489.html

你可能感兴趣的文章