题目链接

去年现场,虎哥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. 使用svn分支

    使用svn分支 原文: https://my.oschina.net/cobish/blog/652984

  2. final和包装类

    ==================================================================================================== ...

  3. JavaBean的用法

    JavaBean是一个可重复使用的软件组件,是用Java语言编写的.遵循一定标准的类. JavaBean是Java Web的重要组件,它封装了数据和操作的功能类,供JSP和Servlet调用,完成数据 ...

  4. debian命令行删除postgresql数据库

    创建数据库 $ createdb odoo-test 删除数据库 $ dropdb odoo-test

  5. vue.js 接收url参数

    1) 路由配置传参方式 在配置路由时 例如 "/firewall/authorize/:uid/:uname/:token" 页面url为 http://XXX.com/firew ...

  6. quicktest Professional下载地址,无限制使用方法

    QTP是quicktest Professional的简称,是一种自动测试工具.使用QTP的目的是想用它来执行重复的自动化测试,主要是用于回归测试和测试同一软件的新版本.因此你在测试前要考虑好如何对应 ...

  7. 现有iOS项目集成React Native过程记录

    在<Mac系统下React Native环境搭建>配置了RN的开发环境,然后,本文记录在现有iOS项目集成React Native的过程,官方推荐使用Cocoapods,项目一开始也是使用 ...

  8. python之Socket网络编程

    什么是网络? 网络是由节点和连线构成,表示诸多对象及其相互联系.在数学上,网络是一种图,一般认为专指加权图.网络除了数学定义外,还有具体的物理含义,即网络是从某种相同类型的实际问题中抽象出来的模型.在 ...

  9. 网络请求 __ NSURLSession

    首先配置into.plist文件 1. 添加 App Transport Security Settings , Type栏自动变为Dictionary 2. 点击左边箭头,使之向下,点击右边加号,添 ...

  10. hdu 2191 珍惜现在,感恩生活

    链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=2191 思路:多重背包模板题 #include <stdio.h> #include ...