题目链接

去年现场,虎哥1Y的,现在刷刷题,找找状态...

一共6种转法,把3个面放到顶部,左旋和右旋,感觉写的还不错....都写成常数了。

  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <string.h>
  4. #include <queue>
  5. #include <algorithm>
  6. #define LL long long
  7. using namespace std;
  8. struct node
  9. {
  10. int num[];
  11. int st;
  12. };
  13. int dr[] = {,,,,,,,,,,,};
  14. int dc[] = {,,,,,,,,,,,};
  15. int a[] = {,,,,,,,,,,,};
  16. int b[] = {,,,,,,,,,,,};
  17. int c[] = {,,,,,,,,,,,};
  18. int aim[][] = {
  19. {,,,},
  20. {,,,},
  21. {,,,},
  22. {,,,},
  23. {,,,},
  24. {,,,}
  25. };
  26. int judge(int *p)
  27. {
  28. int ans = ,i,j;
  29. for(i = ;i < ;i ++)
  30. {
  31. for(j = ;j < ;j ++)
  32. {
  33. if(p[aim[i][j]] != p[aim[i][]])
  34. break;
  35. }
  36. if(j == ) ans ++;
  37. }
  38. return ans;
  39. }
  40. int main()
  41. {
  42. node u,v;
  43. int n,i,ans;
  44. while(scanf("%d",&n)!=EOF)
  45. {
  46. for(i = ;i < ;i ++)
  47. {
  48. scanf("%d",&u.num[i]);
  49. }
  50. u.st = ;
  51. queue<node>que;
  52. que.push(u);
  53. ans = ;
  54. while(!que.empty())
  55. {
  56. u = que.front();
  57. que.pop();
  58. if(ans == ) break;
  59. ans = max(ans,judge(u.num));
  60. if(u.st == n) continue;
  61. v.st = u.st + ;
  62. //a
  63. for(i = ;i < ;i ++)
  64. {
  65. v.num[i] = u.num[i];
  66. }
  67. for(i = ;i < ;i ++)
  68. {
  69. v.num[a[dr[i]]] = u.num[a[i]];
  70. }
  71. que.push(v);
  72. for(i = ;i < ;i ++)
  73. {
  74. v.num[a[dc[i]]] = u.num[a[i]];
  75. }
  76. que.push(v);
  77. //b
  78. for(i = ;i < ;i ++)
  79. {
  80. v.num[i] = u.num[i];
  81. }
  82. for(i = ;i < ;i ++)
  83. {
  84. v.num[b[dr[i]]] = u.num[b[i]];
  85. }
  86. que.push(v);
  87. for(i = ;i < ;i ++)
  88. {
  89. v.num[b[dc[i]]] = u.num[b[i]];
  90. }
  91. que.push(v);
  92. //c
  93. for(i = ;i < ;i ++)
  94. {
  95. v.num[i] = u.num[i];
  96. }
  97. for(i = ;i < ;i ++)
  98. {
  99. v.num[c[dr[i]]] = u.num[c[i]];
  100. }
  101. que.push(v);
  102. for(i = ;i < ;i ++)
  103. {
  104. v.num[c[dc[i]]] = u.num[c[i]];
  105. }
  106. que.push(v);
  107. }
  108. printf("%d\n",ans);
  109. }
  110. return ;
  111. }

HDU 4801 Pocket Cube的更多相关文章

  1. HDU 5292 Pocket Cube 结论题

    Pocket Cube 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5292 Description Pocket Cube is the 2×2× ...

  2. 【HDOJ】4801 Pocket Cube 的几种解法和优化

    1. 题目描述给定一个$2 \times 2 \times 2$的魔方,当某个面上的4个小块颜色均相同时,称这个面为complete.求对这个魔方进行$n \in [1,7]$次旋转(沿某个面顺时针或 ...

  3. 2013区域赛长沙赛区现场赛 K - Pocket Cube

    K - Pocket Cube Time Limit:10000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Su ...

  4. Pocket Cube

    Pocket Cube http://acm.hdu.edu.cn/showproblem.php?pid=5983 Time Limit: 2000/1000 MS (Java/Others)    ...

  5. 【】【】Pocket Cube

    Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submission(s) ...

  6. 2013 ACM区域赛长沙 K Pocket Cube hdu 4801

    题意:给了一个2*2的魔方..每步操作可以将任意一面翻转90度..现在问在N(<=7)步内.最多能翻出几面相同的. 直接打表模拟每种翻转情况 #include<cstdio> #in ...

  7. HDU 1220 B - Cube

    http://acm.hdu.edu.cn/showproblem.php?pid=1220 一开始的做法是,先暴力算出一个面,就是n * n的面,能有多少对.记作face 然后从上开始算下来,最上一 ...

  8. hdu 3547 DIY Cube (Ploya定理)

    DIY Cube Time Limit: 2000/2000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total S ...

  9. 模拟 ZOJ 3736 Pocket Cube

    题目传送门 题意:魔方最多旋转n次,问最多能使多少面颜色相同 分析:6种状态(3种旋转方式*顺逆方向,其他对称的!),首先先打个表,然后很愉快的DFS.自己写的时候费劲脑汁,代码很长,还TLE了... ...

随机推荐

  1. http://www.microsoft.com/en-pk/download/details.aspx?id=40762

    http://www.microsoft.com/en-pk/download/details.aspx?id=40762

  2. Python 网络爬虫(图片采集脚本)

    ===============爬虫原理================== 通过Python访问网站,获取网站的HTML代码,通过正则表达式获取特定的img标签中src的图片地址. 之后再访问图片地址 ...

  3. JAVA基础学习——1.0 Java概述

    Java语言 SUN公司  1995年推出的高级编程语言 ■  主要应用方向 Web开发和Android开发 ■  主要特点 平台无关性:能运行于不同的平台上    安全性:去掉了指针操作,内存由操作 ...

  4. Node.js配合node-http-proxy解决本地开发ajax跨域问题

    情景: 前后端分离,本地前端开发调用接口会有跨域问题,一般有以下3种解决方法: 1. 后端接口打包到本地运行(缺点:每次后端更新都要去测试服下一个更新包,还要在本地搭建java运行环境,麻烦) 2. ...

  5. ABAP 常见查询问题解决方法

    在ABAP 编程的时候会遇到查询单条语句的时候数能取对  但是条目数多了的话 会出现数不准确的问题   原因可能出现在查询使用了二分法查询方式  二分法查询下必须按排序的字段排序  还得按照排序的字段 ...

  6. A Complete List of .NET Open Source Developer Projects

    http://scottge.net/2015/07/08/a-complete-list-of-net-open-source-developer-projects/?utm_source=tuic ...

  7. 如何将 NavigationBar 的半透明效果关闭?

    如何将 NavigationBar 的半透明效果关闭?只需三行代码就可以:self.navigationController.navigationBar.barTintColor = [UIColor ...

  8. <c:if test="value ne, eq, lt, gt,...."> 用法

    类别 运算符 算术运算符 + . - . * . / (或 div )和 % (或 mod ) 关系运算符 == (或 eq ). != (或 ne ). < (或 lt ). > (或 ...

  9. SpringBoot前世今生

    序 本文主要讲述spring boot的由来,即其它诞生的背景,初衷,现状,及对未来的展望. 背景 在很早的年代,J2EE还是java企业级应用的王者规范,EJB风行其道.后来有一个叫Rod John ...

  10. 深入理解 spring 容器,源码分析加载过程

    Spring框架提供了构建Web应用程序的全功能MVC模块,叫Spring MVC,通过Spring Core+Spring MVC即可搭建一套稳定的Java Web项目.本文通过Spring MVC ...