注意:本文介绍的方案有误,正确答案为240种。http://books.google.com.hk/books?id=On5QwCvEA9kC&pg=PA105&lpg=PA105&dq=%E5%85%AD%E9%9D%A2%E4%BD%93+%E5%9B%9B%E7%A7%8D%E9%A2%9C%E8%89%B2&source=bl&ots=Lc7xqJW4IC&sig=uG7Llh_kDgZSN3BGhLWaBU0nANg&hl=en&sa=X&ei=NYtXUYHFIY-UiQfhnYDQCQ&ved=0CEsQ6AEwAw#v=onepage&q&f=false

遇到一个问题如下

正六面体染色
正六面体用4种颜色染色。
共有多少种不同的染色样式?
要考虑六面体可以任意旋转、翻转。

算法如下:

 1 #include <stdio.h>
 2 #pragma warning(disable: 4786)
 3 #include <set>
 4
 5 using namespace std;
 6
 7 void print(int arr[], int total_index)
 8 {
 9     const char *szColors[] = {"红", "黄", "蓝", "绿", "白", "黑", "紫", "灰", "粉"};
10     const char *szSides[] = {"前", "右", "后", "左", "上", "下"};
11     int index;
12
13     printf("%d: ", total_index);
14
15     for (index = 0; index < 6; index += 1)
16     {
17         printf("%s:%s ", szSides[index], szColors[arr[index]]);
18     }
19
20     printf("\n");
21 }
22
23 void resolve(int nColorCount)
24 {
25     set<int> setHashs;
26     int arr[6 * 2];
27     int index, index2, index3 = 0;
28
29     for (arr[0] = 0; arr[0] < nColorCount; arr[0] += 1)
30         for (arr[1] = 0; arr[1] < nColorCount; arr[1] += 1)
31             for (arr[2] = 0; arr[2] < nColorCount; arr[2] += 1)
32                 for (arr[3] = 0; arr[3] < nColorCount; arr[3] += 1)
33                     for (arr[4] = 0; arr[4] < nColorCount; arr[4] += 1)
34                         for (arr[5] = 0; arr[5] < nColorCount; arr[5] += 1)
35                         {
36                             int hash_big = 0;
37
38                             for (index = 0; index < 6; index += 1)
39                             {
40                                 arr[index + 6] = arr[index];
41                             }
42
43                             for (index = 0; index < 6; index += 1)
44                             {
45                                 int hash_this = 0;
46
47                                 for (index2 = 0; index2 < 6; index2 += 1)
48                                 {
49                                     hash_this *= 10;
50                                     hash_this += arr[index + index2];
51                                 }
52
53                                 if (hash_this > hash_big)
54                                 {
55                                     hash_big = hash_this;
56                                 }
57                             }
58
59                             if (setHashs.find(hash_big) == setHashs.end())
60                             {
61                                 setHashs.insert(hash_big);
62                                 print(arr, ++index3);
63                             }
64                         }
65 }
66
67 int main()
68 {
69     resolve(4);
70     return 0;
71 }

答案是700种方案

转载于:https://www.cnblogs.com/Shilyx/archive/2013/03/30/2990939.html

正六面体用若干种颜色染色的问题解法相关推荐

  1. 正六面体染色 正六面体用4种颜色染色。共有多少种不同的染色样式?要考虑六面体可以任意旋转

    import java.util.ArrayList; public class 正六面体染色 { public static int sum = 0; /** * @param args */ pu ...

  2. Java正六面体4种颜色染色方式

    /* * 1.   正六面体染色 正六面体用4种颜色染色. 共有多少种不同的染色样式? 要考虑六面体可以任意旋转.翻转. */ import java.util.ArrayList; public c ...

  3. C语言枚举类 口袋中有红、黄、蓝、白、黑5种颜色的球若干个

    口袋中有红.黄.蓝.白.黑5种颜色的球若干个.每次从口袋中先后取出3个球,问得到3种不同颜色的球的可能取法,输出每种排列的情况 #include<stdio.h> int main() { ...

  4. 口袋中有红黄蓝白黑5种颜色的球若干个。每次从口袋中任意取

    * * 输入描述:出三个球,问得到3中不通过颜色的球口袋中有红黄蓝白黑5种颜色的球若干个.每次从口袋中任意取的可能取法.(枚举) * 问题描述: * 程序输出: * 问题分析:略 * 算法设计:略 * ...

  5. 口袋中有红、黄、蓝、白、黑5种颜色的球若干个。每次从口袋中取出3个不同颜色的球,问有多少种取法?并输出每一种取法。

    口袋中有红.黄.蓝.白.黑5种颜色的球若干个.每次从口袋中取出3个不同颜色的球,问有多少种取法?并输出每一种取法. 这是个组合问题,答案是C53=10C_5^3=10C53​=10 使用枚举,代码如下 ...

  6. 口袋中有红、黄、蓝、白、黑5种颜色的球若干个,每次从口袋中先后取出3个球,问得到3种不同颜色的球的可能取法,输出每种排列的情况。

    口袋中有红.黄.蓝.白.黑5种颜色的球若干个,每次从口袋中先后取出3个球,问得到3种不同颜色的球的可能取法,输出每种排列的情况. 方法:(枚举) #include<stdio.h>int ...

  7. 口袋中有红黄蓝白黑5种颜色的球若干个。每次从口袋中任意取出三个球,问得到3中不通过颜色的球的可能取法。(枚举、gcc编译)

    1.题目 口袋中有红黄蓝白黑5种颜色的球若干个.每次从口袋中任意取出三个球,问得到3中不通过颜色的球的可能取法.(枚举) 2.代码 #include <stdio.h>void main( ...

  8. 【C】例9.12口袋中有红、黄、蓝、白、黑5种颜色的球若干。每次从口袋中先后取出3个球, 问得到3种不同颜色的球的可能取法,输出每种排列的情况

    //口袋中有红.黄.蓝.白.黑5种颜色的球若干.每次从口袋中先后取出3个球, //问得到3种不同颜色的球的可能取法,输出每种排列的情况 #include <stdio.h> int mai ...

  9. 口袋中有红黄蓝白黑5种颜色的球若干个。每次从口袋中任意取出三个球,问得到3中不通过颜色的球的可能取法。(枚举)

    // 121212 第七章例7.7.cpp : 定义控制台应用程序的入口点. // /* * Copyright (c) 2012, 烟台大学计算机学院 * All rights reserved. ...

最新文章

  1. 燕大计算机专业档次,河北省高校排名:分为四个档次,燕大在第二档,第三档有八所高校...
  2. docker 启动mongodb
  3. Changes in Android 7 Nougat
  4. RotateDrawable
  5. python棋盘覆盖问题_棋盘覆盖问题可视化动图——python
  6. 解决c#,wpf程序带环境安装包体积太大问题
  7. 标准模块 queue
  8. 【Python游戏】Python基于pygame和random模块开发的一个拼图小游戏 | 附带源码
  9. matlab 直方图 拟合,MATLAB 直方图拟合
  10. 开始学习 HarmonyOS 嵌入式开发
  11. 产品经理学习笔记-简约设计(1)
  12. 360全景倒车影像怎么看_360度全景倒车影像真的很有用?水分有多少!
  13. js之原生js轮盘抽奖实例分析(幸运大转盘抽奖)
  14. 搬砖试金石!github星标7W算法刷题宝典,还愁拿不下大厂offer?
  15. Python快捷创建文件夹和文件详解
  16. java 开发微型公众账号应用
  17. Sagittarius's Trial I - 9 HDU - 1754 I Hate It
  18. 邂逅Flutter开发
  19. Android 在xml中更改纯色图片颜色
  20. 专科生建议学云计算吗?云计算未来发展前景如何?专科学云计算怎么样?

热门文章

  1. 从0基础学习MySQL数据库(三)
  2. Apache Hive DML语句与函数使用
  3. [深度学习]C++调用Python-YOLO模型进行目标检测
  4. 自定义可存数据的jquery 表情输入框
  5. 三个变量存在一个协整方程_Johansen结果显示三个协整关系是什么意思呢?
  6. 身上出现的游走性疼痛会是躯体化障碍导致的吗
  7. 自动售货机的php代码,查看“自动贩卖机”的源代码
  8. 【转】RS232、RS485、TTL电平、CMOS电平
  9. 7 Billion Humans游玩
  10. 自学51单片机 - 矩阵按键实验