• OpenJ_Bailian 2814 拨钟问题


    总时间限制: 
    1000ms
     
    内存限制: 
    65536kB
    描述

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

    |-------|    |-------|    |-------|
    | | | | | | |
    |---O | |---O | | O |
    | | | | | |
    |-------| |-------| |-------|
    A B C

    |-------| |-------| |-------|
    | | | | | |
    | O | | O | | O |
    | | | | | | | | |
    |-------| |-------| |-------|
    D E F

    |-------| |-------| |-------|
    | | | | | |
    | O | | O---| | O |
    | | | | | | | |
    |-------| |-------| |-------|
    G H I
    (图 1)

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


    移动    影响的时钟

    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点。按照移动的序号从小到大输出结果。相邻两个整数之间用单个空格隔开。
    样例输入
    3 3 0 
    2 2 2 
    2 1 2 
    样例输出
    4 5 8 9 


    解题思路:9重循环枚举

     1 #include <iostream>
     2 
     3 using namespace std;
     4 
     5 
     6 int main()
     7 {
     8     int clock[10];
     9     for (int i = 1; i <= 9; ++i)
    10         cin >> clock[i];
    11 
    12     int minCnt = 100;    //保存拨动的最小次数
    13     int i1, i2, i3, i4, i5, i6, i7, i8, i9;
    14     int result[10];
    15     for (i1 = 0; i1 <= 3; ++i1)
    16         for (i2 = 0; i2 <= 3; ++i2)
    17             for (i3 = 0; i3 <= 3; ++i3)
    18                 for (i4 = 0; i4 <= 3; ++i4)
    19                     for (i5 = 0; i5 <= 3; ++i5)
    20                         for (i6 = 0; i6 <= 3; ++i6)
    21                             for (i7 = 0; i7 <= 3; ++i7)
    22                                 for (i8 = 0; i8 <= 3; ++i8)
    23                                     for (i9 = 0; i9 <= 3; ++i9)
    24                                     {
    25                                         if ((i1 + i2 + i4 + clock[1]) % 4 == 0 && 
    26                                             (i1 + i2 + i3 + i5 + clock[2]) % 4 == 0 && 
    27                                             (i2 + i3 + i6 + clock[3]) % 4 == 0 && 
    28                                             (i1 + i4 + i5 + i7 + clock[4]) % 4 == 0 && 
    29                                             (i1 + i3 + i5 + i7 + i9 + clock[5]) % 4 == 0 && 
    30                                             (i3 + i5 + i6 + i9 + clock[6]) % 4 == 0 && 
    31                                             (i4 + i7 + i8 + clock[7]) % 4 == 0 && 
    32                                             (i5 + i7 + i8 + i9 + clock[8]) % 4 == 0 && 
    33                                             (i6 + i8 + i9 + clock[9]) % 4 == 0)
    34                                         {
    35                                             int sum = i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9;
    36                                             if (sum < minCnt)    //如果当前拨动的次数小于最小拨动次数
    37                                             {
    38                                                 minCnt = sum;
    39                                                 result[1] = i1;
    40                                                 result[2] = i2;
    41                                                 result[3] = i3;
    42                                                 result[4] = i4;
    43                                                 result[5] = i5;
    44                                                 result[6] = i6;
    45                                                 result[7] = i7;
    46                                                 result[8] = i8;
    47                                                 result[9] = i9;
    48                                             }
    49                                         }
    50                                     }
    51     
    52     for (int i = 1; i <= 9; ++i)
    53         for (int j = 1; j <= result[i]; ++j)
    54             cout << i << ' ';
    55 
    56     return 0;
    57 }
     
  • 相关阅读:
    怎样让一个div高度自适应浏览器高度
    angular change the url , prevent reloading
    论习惯的重要性
    php的几个内置的函数
    cakephp 2.0 源码解读(一)
    svn switch 的用法
    浏览器兼容问题 及 解决方案 (一)
    浏览器兼容问题 及 解决方案 (二)
    promise 承诺
    ng-selected 与ng-options的使用
  • 原文地址:https://www.cnblogs.com/FengZeng666/p/10417191.html
Copyright © 2020-2023  润新知