HDU 5983(模拟魔方 模拟)
题意是说给定一个 2*2 魔方的各个面的情况,问是否能转动不超过一次使得魔方复原。
思路是先在输入的时候统计一下已完成的面数,要想以最多一次的转动使得魔方复原,那么已完成的面数只能是 2 面或者 6 面,此处可剪枝。
若已完成 6 面,那么一定可以复原;
若已完成 2 面,则要用一次转动完成其他六面,开始这里打算用结构体去存,结果在判断的时候自己混乱了……最终直接定了 24 个变量,a,b,c……w,x,
手动做了个小正方体,太丢人……(但不得不说这种方法挺好的,易于理解,而且不会乱^_^)
代码如下:
1 #include <bits/stdc++.h> 2 using namespace std; 3 int a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x; 4 bool xu[8]; 5 int main() 6 { 7 int times,cnt; 8 bool wu; 9 scanf("%d",×); 10 while(times--) 11 { 12 cnt = 0; 13 memset(xu,0,sizeof(xu)); 14 scanf("%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d",&a,&b,&c,&d,&e,&f,&g,&h,&i,&j,&k,&l,&m,&n,&o,&p,&q,&r,&s,&t,&u,&v,&w,&x); 15 if(a==b&&b==c&&c==d) 16 { 17 ++cnt; 18 xu[0] = 1; 19 } 20 if(e==f&&f==g&&g==h) 21 { 22 ++cnt; 23 xu[1] = 1; 24 } 25 if(i==j&&j==k&&k==l) 26 { 27 ++cnt; 28 xu[2] = 1; 29 } 30 if(m==n&&n==o&&o==p) 31 { 32 ++cnt; 33 xu[3] = 1; 34 } 35 if(q==r&&r==s&&s==t) 36 { 37 ++cnt; 38 xu[4] = 1; 39 } 40 if(u==v&&v==w&&w==x) 41 { 42 ++cnt; 43 xu[5] = 1; 44 } 45 if(cnt==6) puts("YES"); 46 else if(cnt==2) 47 { 48 wu = 0; 49 if(xu[0]&&xu[2]) 50 { 51 if(m==n&&m==u&&m==w) 52 { 53 if(v==x&&v==e&&v==f) 54 if(g==h&&g==r&&g==t) 55 if(q==s&&q==o&&q==p) 56 wu = 1; 57 } 58 else if(m==n&&m==r&&m==t) 59 { 60 if(q==s&&q==e&&q==f) 61 if(g==h&&g==u&&g==w) 62 if(v==x&&v==o&&v==p) 63 wu = 1; 64 } 65 } 66 else if(xu[1] && xu[3]) 67 { 68 if(a==b&&a==w&&a==x) 69 { 70 if(u==v&&u==i&&u==j) 71 if(k==l&&k==s&&k==t) 72 if(q==r&&q==c&&q==d) 73 wu = 1; 74 } 75 else if(a==b&&a==s&&a==t) 76 { 77 if(q==r&&q==i&&q==j) 78 if(k==l&&k==w&&k==x) 79 if(u==v&&u==c&&u==d) 80 wu = 1; 81 } 82 } 83 else if(xu[4] && xu[5]) 84 { 85 if(a==c&&a==n&&a==p) 86 { 87 if(m==o&&m==j&&m==l) 88 if(i==k&&i==f&&i==h) 89 if(e==g&&e==b&&e==d) 90 wu = 1; 91 } 92 else if(a==c&&a==f&&a==h) 93 { 94 if(e==g&&e==j&&e==l) 95 if(i==k&&i==n&&i==p) 96 if(m==o&&m==b&&m==d) 97 wu = 1; 98 } 99 } 100 if(wu) puts("YES"); 101 else puts("NO"); 102 } 103 else puts("NO"); 104 } 105 return 0; 106 }
View Code
转载于:https://www.cnblogs.com/Taskr212/p/9740115.html
HDU 5983(模拟魔方 模拟)相关推荐
- HDU 3328 Flipper 栈 模拟
HDU 3328 Flipper 栈 模拟 首先想说,英语太烂这题读了很长时间才读懂......题意是说输入有几张牌,然后输入这些牌的初始状态(是面朝上还是面朝下),然后输入操作方式,R表示翻一下右边 ...
- 驱动级模拟驱动级模拟:直接读写键盘的硬件端口!
驱动级模拟驱动级模拟:直接读写键盘的硬件端口! 有一些使用DirectX接口的游戏程序,它们在读取键盘操作时绕过了windows的消息机制,而使用DirectInput.这是因为有些游戏对实时性控制的 ...
- lammps计算聚合物例子_LAMMPS模拟聚合物结构,非晶态聚合物变形行为的模拟,纳米线变形模拟,单轴张力模拟,晶格参数计算...
推荐一个网站,上面有LAMMPS模拟聚合物结构,非晶态聚合物变形行为的模拟,纳米线变形模拟,单轴张力模拟,晶格参数计算的lammps脚本,如下面是晶格参数计算的lammps脚本,具体网址是: LAMM ...
- 计算机CCT考试模拟操作题,基础计算机cct模拟测试模拟题.doc
基础计算机cct模拟测试模拟题 一.单选 1. 用计算机进行图书资料的检索,该计算机应用属于 A. 数据处理 B. 自动控制 C. 辅助设计 D. 科学计算 8. 下列图标不会出现在"控制面 ...
- 重力模拟,模拟了高达100000粒子和一个中心物体之间的基本引力
VisualFreeBasic 中的简单重力模拟 代码模拟了高达100000粒子和一个中心物体之间的基本引力. 可以调整模拟速度. 可以调整粒子的初始速度 (方向角是随机的) 可以调整粒子质量 重置微 ...
- 社恐人必备逃跑神器-模拟来电+模拟短信+模拟钱包+模拟关机
小伙伴们注意:公众号的推送机制不再按照时间前后推送了,微信公众号信息流乱序.君哥建议大家把科技毒瘤君公众号置顶(设为星标⭐),以便第一时间看到推送,非常感谢~,方法如下图: 如果你是一个具有社交恐惧症 ...
- Week10 限时大模拟 B - 东东转魔方 HDU - 5983
题目描述 东东有一个二阶魔方,即2×2×2的一个立方体组.立方体由八个角组成. 魔方的每一块都用三维坐标(h, k, l)标记,其中h, k, l∈{0,1}.六个面的每一个都有四个小面,每个小面都有 ...
- HDU 5250 三阶魔方(模拟、置换)
题意: 给定N≤100的三阶魔方操作序列给定N\le100的三阶魔方操作序列 魔方操作如下图:魔方操作如下图: 求问:对一个初状态(六个面都是拼好的)的魔方进行多少次连续的序列操作后,魔方会恢复到初状 ...
- 圆桌会议 HDU - 1214(规律+模拟队列)
Time limit 1000 ms Memory limit 32768 kB OS Windows Source 杭电ACM省赛集训队选拔赛之热身赛 HDU ACM集 ...
最新文章
- 8种方案解决重复提交问题
- 为了撩妹用Python做了一个办公小工具,她说棒极了
- Linux驱动修炼之道-SPI驱动框架源码分析(上)
- 百度推出飓风算法,严厉打击恶劣采集
- 使用钩子函数[3] - 建立一个全局的鼠标钩子
- 单链表的逆序java_java 实现单链表的逆序
- 【Redis】Redis介绍与Redis3在Window下的安装
- conda pip安装在哪里_TensorFlow 2.0 安装指南
- 微信小程序把玩(三十二)Image API
- 【LeetCode】剑指 Offer 61. 扑克牌中的顺子
- RK 3399 切换以太网卡
- Linux系统上安装JDK和Tomcat服务器
- Q78:规则网格(Regular Grids)——Ray Tracing中的一种加速技术
- System.Transactions.Diagnostics.DiagnosticTrace 的类型初始值设定项引发异常。配置系统未能初始化
- sqlserver200864位下载_SQL Server 2008 官方简体中文正式版
- 蓝牙---AVRCP协议
- PHOTOSHOP中常用的四种抠图方法
- 学计算机拼音摇号,拼音真的很难教?要不要提前学?我们一起陪娃做好这些就够了!...
- 开发人员系统功能设计常用办公软件分享
- JavaScript展示商品详情图