总时间限制: 
1000ms

内存限制: 
65536kB
描述

有9个时钟,排成一个3*3的矩阵。

  1. |-------| |-------| |-------|
    | | | | | | |
    |---O | |---O | | O |
    | | | | | |
    |-------| |-------| |-------|
    A B C
  2.  
  3. |-------| |-------| |-------|
    | | | | | |
    | O | | O | | O |
    | | | | | | | | |
    |-------| |-------| |-------|
    D E F
  4.  
  5. |-------| |-------| |-------|
    | | | | | |
    | O | | O---| | O |
    | | | | | | | |
    |-------| |-------| |-------|
    G H I
    (图 1)

现在需要用最少的移动,将9个时钟的指针都拨到12点的位置。共允许有9种不同的移动。如下表所示,每个移动会将若干个时钟的指针沿顺时针方向拨动90度。

  1. 移动 影响的时钟
  2.  
  3. 1 ABDE
    2 ABC
    3 BCEF
    4 ADG
    5 BDEFH
    6 CFI
    7 DEGH
    8 GHI
    9 EFHI
输入
9个整数,表示各时钟指针的起始位置,相邻两个整数之间用单个空格隔开。其中,0=12点、1=3点、2=6点、3=9点。
输出
输出一个最短的移动序列,使得9个时钟的指针都指向12点。按照移动的序号从小到大输出结果。相邻两个整数之间用单个空格隔开。
样例输入
  1. 3 3 0
  2. 2 2 2
  3. 2 1 2
样例输出
  1. 4 5 8 9
  2.  
  3. 解题思路:9重循环枚举
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7. int clock[];
  8. for (int i = ; i <= ; ++i)
  9. cin >> clock[i];
  10.  
  11. int minCnt = ; //保存拨动的最小次数
  12. int i1, i2, i3, i4, i5, i6, i7, i8, i9;
  13. int result[];
  14. for (i1 = ; i1 <= ; ++i1)
  15. for (i2 = ; i2 <= ; ++i2)
  16. for (i3 = ; i3 <= ; ++i3)
  17. for (i4 = ; i4 <= ; ++i4)
  18. for (i5 = ; i5 <= ; ++i5)
  19. for (i6 = ; i6 <= ; ++i6)
  20. for (i7 = ; i7 <= ; ++i7)
  21. for (i8 = ; i8 <= ; ++i8)
  22. for (i9 = ; i9 <= ; ++i9)
  23. {
  24. if ((i1 + i2 + i4 + clock[]) % == &&
  25. (i1 + i2 + i3 + i5 + clock[]) % == &&
  26. (i2 + i3 + i6 + clock[]) % == &&
  27. (i1 + i4 + i5 + i7 + clock[]) % == &&
  28. (i1 + i3 + i5 + i7 + i9 + clock[]) % == &&
  29. (i3 + i5 + i6 + i9 + clock[]) % == &&
  30. (i4 + i7 + i8 + clock[]) % == &&
  31. (i5 + i7 + i8 + i9 + clock[]) % == &&
  32. (i6 + i8 + i9 + clock[]) % == )
  33. {
  34. int sum = i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9;
  35. if (sum < minCnt) //如果当前拨动的次数小于最小拨动次数
  36. {
  37. minCnt = sum;
  38. result[] = i1;
  39. result[] = i2;
  40. result[] = i3;
  41. result[] = i4;
  42. result[] = i5;
  43. result[] = i6;
  44. result[] = i7;
  45. result[] = i8;
  46. result[] = i9;
  47. }
  48. }
  49. }
  50.  
  51. for (int i = ; i <= ; ++i)
  52. for (int j = ; j <= result[i]; ++j)
  53. cout << i << ' ';
  54.  
  55. return ;
  56. }
  1.  

OpenJ_Bailian 2814 拨钟问题的更多相关文章

  1. ACM/ICPC 之 枚举(POJ1681-画家问题+POJ1166-拨钟问题+POJ1054-讨厌的青蛙)

    POJ1681-画家问题 枚举的经典例题,枚举第一行即可,其余行唯一. //画家问题,y表示黄色,w表示白色,怎样让墙上所有方格为y,操作类似熄灯问题poj1222 //memory 136K Tim ...

  2. [poj]开关类问题 枚举 位运算

    poj 1222  EXTENDED LIGHTS OUT 开关只有两种方案 按和不按,按两次相当于关 只用枚举第一排开关的按法即可,剩下的行为使上一排的灯全部关闭,按法可以确定,并且是唯一的. 最后 ...

  3. Algorithm Exercises

    汇总一些常见的算法题目,参考代码. 注:部分题目没有合适的oj地址 枚举 Perfect Cubes.Biorhythms.Counterfeit Dollar.EXTENDED LIGHTS OUT ...

  4. Windows 10不能拨L2TP协议的VPN

    之前是Windows 10版本1607版本14393.102升级14393.187过后,突然出现不能拨公司防火墙的L2TPVPN了. 网上众说纷纭,原来遇到这个问题的人真不少,不过我是第一次遇到.结合 ...

  5. 十五分钟学会用Hessian

    了解Hessian Hessian是远程调用的一种技术,和WebService类似,但不同的是较WebService而言,它更轻量级,更简单,更快速.关于Hessian更详细全面的介绍可以查看http ...

  6. OpenWrt > ADSL单线多拨,负载均衡(仅供参考)

    前题 硬件:路由器,刷入OpenWrt 一些背景知识和动手能力 目标效果图 步骤 使用SSH 登陆路由器.I.e. ssh root@192.168.2.1 运行/usr/bin/duobo.日志类似 ...

  7. 【转】三十分钟掌握STL

    转自http://net.pku.edu.cn/~yhf/UsingSTL.htm 三十分钟掌握STL 这是本小人书.原名是<using stl>,不知道是谁写的.不过我倒觉得很有趣,所以 ...

  8. 假如现在有一堆长度大于3小于9的电话号码,用座机呼叫,如果出现这样的号码【123和12345】那么12345将永远不会被拨出,因为拨到123的时候电话已经呼出了,试写一个函数输出所有不能被呼出的电话号码(java实现)

    解题: 假如现在有一堆长度大于3小于9的电话号码,用座机呼叫,如果出现这样的号码[123和12345]那么12345将永远不会被拨出,因为拨到123的时候电话已经呼出了,试写一个函数输出所有不能被呼出 ...

  9. 平面直接坐标系线段相交问题(小Q(钟神)的问题)

    [问题描述] 小 Q 对计算几何有着浓厚的兴趣.他经常对着平面直角坐标系发呆,思考一些有趣的问题.今天,他想到了一个十分有意思的题目:首先,小 Q 会在?轴正半轴和?轴正半轴分别挑选?个点.随后,他将 ...

随机推荐

  1. Golang的单引号、双引号与反引号

    Go语言的字符串类型string在本质上就与其他语言的字符串类型不同: Java的String.C++的std::string以及Python3的str类型都只是定宽字符序列 Go语言的字符串是一个用 ...

  2. poj1562 Oil Deposits 深搜模板题

    题目描述: Description The GeoSurvComp geologic survey company is responsible for detecting underground o ...

  3. headless&unittest

    为什么要使用 headless 测试? headless broswer 可以给测试带来显著好处: 对于 UI 自动化测试,少了真实浏览器加载 css,js 以及渲染页面的工作.无头测试要比真实浏览器 ...

  4. Ubuntu16.04配置Tomcat的80端口访问

    [问题描述] 在阿里云 ECS 服务器 Ubuntu16.04 下部署 Java Web 应用时,发现配置的 Tomcat 服务启动后 80 端口无法被监听. [问题原因] 出现该问题的主要原因是:非 ...

  5. Confluence 6 从外部小工具中注册访问

    希望从 Confluence 中删除一个小工具,你可以选择小工具边上的 URL ,然后单击删除(Delete). 如果你希望取消订阅一个应用的小工具,你需要删除整个订阅.你不能仅仅删除你订阅中的某一个 ...

  6. selenium怎么操作web页面常见的元素

    总结一下selenium怎么操作web页面常见的元素. 主要有: 上传 alter dialog prompt dialog confirm dialog select list radio box ...

  7. flutter No material widget found textfield widgets require a material widget ancestor

    Error states that TextField widgets require a Material widget ancestor. Simply wrapping your whole l ...

  8. WinHex数据恢复笔记(一)

    WinHex数据恢复功能强大,可以从硬件簇上扇区进行数据扫描恢复.首先对winhex的各个功能介绍.之后对实例记录一个Word文档删除后进行恢复. 1.WinHex数据恢复软件的编辑区输入与其他普通文 ...

  9. 在组件放使用v-model和slot插槽的简单实用

    封装的组件(SelectDefault.vue文件): <template> <div class="select-default"> <label& ...

  10. python 给对象绑定属性和方法和__slots__的使用

    # 以c语言为主是静态语言,运行之前先编译,在运行的过程中不允许编辑代码# 在运行的过程中,可以改变,可以添加属性,就是属于动态语言(python) # python动态的添加属性以及方法class ...