题意:
      2*2*2的魔方,给你一个初始状态,和一个限定步数,问你在这么多步数条件下最多能有多少面拼好,(不是累加关系,是某一个状态的最多,最多是6);
思路:

     最多是7步,所以直接暴力搜索,第一次写,无脑写的,308行,结果超时了,sb了,哎!有从写了一下,就是找找转换规律,100多行ac,总之就是个水模拟,细心点,转换规律别写错了就行了...

#include<stdio.h>
#include<string.h>
#include<queue>using namespace std;typedef struct
{int a ,b;
}SW;typedef struct
{int now[25] ,t;
}NODE;SW sw[5][15];
NODE xin ,tou;void csh_sw()
{sw[1][1].a = 4 ,sw[1][1].b = 6;sw[1][2].a = 5 ,sw[1][2].b = 7;sw[1][3].a = 6 ,sw[1][3].b = 8;sw[1][4].a = 7 ,sw[1][4].b = 9;sw[1][5].a = 8 ,sw[1][5].b = 23;sw[1][6].a = 9 ,sw[1][6].b = 22;sw[1][7].a = 23 ,sw[1][7].b = 4;sw[1][8].a = 22 ,sw[1][8].b = 5;sw[1][9].a = 1 ,sw[1][9].b = 0;sw[1][10].a = 3,sw[1][10].b = 1;sw[1][11].a = 2 ,sw[1][11].b = 3;sw[1][12].a = 0 ,sw[1][12].b = 2;sw[2][1].a = 1 ,sw[2][1].b = 7;sw[2][2].a = 3 ,sw[2][2].b = 13;sw[2][3].a = 7 ,sw[2][3].b = 17;sw[2][4].a = 13 ,sw[2][4].b = 19;sw[2][5].a = 17 ,sw[2][5].b = 21;sw[2][6].a = 19 ,sw[2][6].b = 23;sw[2][7].a = 21 ,sw[2][7].b = 1;sw[2][8].a = 23 ,sw[2][8].b = 3;sw[2][9].a = 9 ,sw[2][9].b = 8;sw[2][10].a = 15,sw[2][10].b = 9;sw[2][11].a = 14 ,sw[2][11].b = 15;sw[2][12].a = 8 ,sw[2][12].b = 14;sw[3][1].a = 2 ,sw[3][1].b = 8;sw[3][2].a = 3 ,sw[3][2].b = 14;sw[3][3].a = 8 ,sw[3][3].b = 17;sw[3][4].a = 14 ,sw[3][4].b = 16;sw[3][5].a = 17 ,sw[3][5].b = 11;sw[3][6].a = 16 ,sw[3][6].b = 5;sw[3][7].a = 11 ,sw[3][7].b = 2;sw[3][8].a = 5 ,sw[3][8].b = 3;sw[3][9].a = 6 ,sw[3][9].b = 7;sw[3][10].a = 7,sw[3][10].b = 13;sw[3][11].a = 13 ,sw[3][11].b = 12;sw[3][12].a = 12 ,sw[3][12].b = 6;}int maxx;
void jude(NODE a)
{int now = 0;if(a.now[0] == a.now[1] && a.now[1] == a.now[2] && a.now[2] == a.now[3])now ++;if(a.now[4] == a.now[5] && a.now[5] == a.now[10] && a.now[10] == a.now[11])now ++;if(a.now[6] == a.now[7] && a.now[7] == a.now[12] && a.now[12] == a.now[13])now ++;if(a.now[8] == a.now[9] && a.now[9] == a.now[14] && a.now[14] == a.now[15])now ++;if(a.now[16] == a.now[17] && a.now[17] == a.now[18] && a.now[18] == a.now[19])now ++;if(a.now[20] == a.now[21] && a.now[21] == a.now[22] && a.now[22] == a.now[23])now ++;if(maxx < now) maxx = now;
}int T;
void bfs()
{queue<NODE>q;xin.t = 0;q.push(xin);maxx = 0;jude(xin);while(!q.empty()){tou = q.front();q.pop();jude(tou);if(maxx == 6) return;if(tou.t == T) continue;for(int i = 1 ;i <= 3 ;i ++){xin = tou ,xin.t ++;for(int j = 1 ;j <= 12 ;j ++)xin.now[sw[i][j].a] = tou.now[sw[i][j].b];q.push(xin);}for(int i = 1 ;i <= 3 ;i ++){xin = tou ,xin.t ++;for(int j = 1 ;j <= 12 ;j ++)xin.now[sw[i][j].b] = tou.now[sw[i][j].a];q.push(xin);}}
}int main ()
{int i;csh_sw();while(~scanf("%d" ,&T)){maxx = 0;for(i = 0 ;i <= 23 ;i ++)scanf("%d" ,&xin.now[i]);bfs();printf("%d\n" ,maxx);}return 0;
}

ZOJ 3736 模拟魔方相关推荐

  1. 程序设计思维 week10 限时大模拟-魔方

    A-字符串ST 题目 东东有一个字符串X,该串包含偶数个字符,一半是 S 字符,一半是 T 字符 东东可以对该字符串执行 1010000 次操作:如果存在 ST 是该串的子串,则删除掉最左边的 ST. ...

  2. HDU 5983(模拟魔方 模拟)

    题意是说给定一个 2*2 魔方的各个面的情况,问是否能转动不超过一次使得魔方复原. 思路是先在输入的时候统计一下已完成的面数,要想以最多一次的转动使得魔方复原,那么已完成的面数只能是 2 面或者 6 ...

  3. nowcoder-顺时针打印矩阵-模拟魔方逆时针旋转

    题目 顺时针打印矩阵 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出 ...

  4. java 魔方_2 java实现4阶魔方,通过运行代码,鼠标进行旋转,可以模拟 游戏 Develop 246万源代码下载- www.pudn.com...

    开发工具: Java 文件大小: 3830 KB 上传时间: 2015-11-07 下载次数: 0 详细说明:java实现4阶魔方,通过运行代码,鼠标进行旋转,可以模拟魔方游戏-java achiev ...

  5. python魔方程序算法_python魔方程序算法_python算法(一)

    # 算法_01_顺时针打印矩阵 ## Question 如果一个3x3的矩阵[ [123] [456] [789] ] 按照从外向里以顺时针的顺序依次打印出每一个数字,那么得到的结果是() %!C. ...

  6. 魔方CFOP公式匹配算法

    1.魔方的原理及其性质 魔方最初是由匈牙利教授厄尔诺鲁比克发明的,之后经过发展,魔方衍化出了多种多样的版本,但最为经典的还是三阶魔方,具有普适性的同时,又是被大家所熟悉的.所以,本文选了三阶魔方作为本 ...

  7. 软件工程第二次作业:基于Unity的3D魔方实现

    基于Unity的3D魔方实现 王化明(2012211757).吴静(2012211523)  一.背景: 魔方,英文名为Rubik's Cube,又叫魔术方块,也称鲁比克方块.是匈牙利布达佩斯建筑学院 ...

  8. 这些算法工程师,他们真的是太难了!

    现在的算法工程师真的是太难了! 要让AI会看人眼都分辨不清的医疗影像 数据又不够,还得用前沿技术 好不容易学会看片,还要让AI会分析病理 赋予AI诊断疾病的使命 然后 几十种模型,N次计算 只给一张显 ...

  9. 如何从零开始设计与开发一款通用模型预测调度系统 | 干货分享

    机器学习模型从训练导出到生成环境部署,这个过程中涉及大量工作,会面临着各种问题与挑战,比如不断丰富的业务场景,系统需要负载种类繁多的神经网络,预测任务不均匀等,然而企业拥有的计算资源(如GPU个数)是 ...

最新文章

  1. scrum看板工具做问题跟踪
  2. C语言实例第6期:反转字符串
  3. 22、java中的注解
  4. uva 10026 Shoemaker's Problem(排序)
  5. JQuery ajax返回JSON时的处理方式
  6. 2019 十大国产开源项目来势汹汹!
  7. eclipse中编译运行maven项目使用jetty
  8. SPOJ Qtree系列
  9. QQ音乐生成下载链接
  10. _stdcall,_cdecl区别
  11. 计算机本地连接无internet访问权限,ipv4连接无internet访问权限怎么解决
  12. unimodal_palindromic——回文串dp动规
  13. 非标自动化转行机器人_工作4年,自动化工程师该不该转行
  14. 【每日新闻】​阿里钉钉布局医疗行业生态,未来医院成医疗行业“香饽饽” | 工信部信软司:持续推进云计算和区块链等领域标准研制工作...
  15. Django实现adminx后台识别用户身份的内容编辑与显示
  16. 为什么用互联网思维,却做不好硬件
  17. 构建maven时No archetypes currently available的解决方法
  18. __builtin函数总结
  19. 湖南大学的计算机网络,林亚平-湖大信息科学与工程学院
  20. ZOJ-3380 Patchouli's Spell Cards(概率DP大数)

热门文章

  1. 输入【ionic start myApp tabs】命令创建项目时失败
  2. Linux 【网络】C10K 和 C1000K 回顾
  3. C语言制作通讯录(新手练习推荐)
  4. 计算机应用基础课程整体设计说课视频,关于计算机应用基础课程说课设计.doc...
  5. UM5202EEDFSOT-143工作电压5V用于高速线路保护的2线ESD保护二极管阵列管UM5202EEDF USB端口和以太网端口保护TVS二极管阵列,低泄漏电流和箝位电压25V结电容1PF
  6. RS232电平 RS485电平 RS422电平
  7. 经典物理学电荷连续性方程推导
  8. 云中漫步-但是还有书籍
  9. Android kotlin上传头像实现
  10. 【python 处理亿级数据】使用 Pandas 处理亿级数据