首页 > 其他分享 >洛谷P1213 [USACO1.4][IOI1994]时钟 The Clocks

洛谷P1213 [USACO1.4][IOI1994]时钟 The Clocks

时间:2023-03-04 22:56:32浏览次数:79  
标签:输出 移动 洛谷 表格 USACO1.4 int IOI1994 时钟 指针

这是一个暴力枚举题

有两种解决方法,第一种用九重for循环(有点麻烦,尽量别用),第二种简化版(虽然行数少了,但难理解),先来看看


 

题目!!!

题目描述

考虑将如此安排在一个 3*3 行列中的九个时钟:

目标要找一个最小的移动顺序将所有的指针指向 12点。下面原表格列出了 9 种不同的旋转指针的方法,每一种方法都叫一次移动。
选择 1∼9 号移动方法,将会使在表格中对应的时钟的指针顺时针旋转 90度

移动方法受影响的时钟
1 ABDE
2 ABC
3 BCEF
4 ADG
5 BDEFH
6 CFI
7 DEGH
8 GHI
9 EFHI

通过这个表格,我们可以做一个演示图来加深理解

输入格式

输入三行,每行三个正整数,表示一个时钟的初始时间,数字的含意和上面第一个例子一样。

输出格式

单独的一行包括一个用空格分开的将所有指针指向 1212 点的最短移动顺序的列表。

如果有多种方案,输出那种使其连接起来的数字最小的方案。(举例来说 5 2 4 6<9 3 1 15 2 4 6<9 3 1 1 )。

输入输出样例

输入 #1   9 9 12   6 6 6      6 3 6  输出 #1  4 5 8 9 下面,上代码~~~~~~~~

#include<bits/stdc++.h>
using namespace std;
int q[10000],a[100];
int main(){
  for(int i=1;i<=9;i++){
  cin>>a[i];
  a[i]=a[i]/3;
  }
  for(int k=0;k<=3;k++)
    for(int b=0;b<=3;b++)
      for(int c=0;c<=3;c++)
        for(int d=0;d<=3;d++)
          for(int e=0;e<=3;e++)
            for(int f=0;f<=3;f++)
              for(int g=0;g<=3;g++)
                for(int h=0;h<=3;h++)
                  for(int i=0;i<=3;i++)
                    if((k+b+d)%4==(4-a[1])%4 and (k+b+c+e)%4==(4-a[2])%4 and (b+c+f)%4==(4-a[3])%4 and (k+d+e+g)%4==(4-a[4])%4 and (k+c+e+g+i)%4==(4-a[5])%4                                                                                             and (c+e+f+i)%4==(4-a[6])%4 and (d+g+h)%4==(4-a[7])%4 and (e+g+h+i)%4==(4-a[8])%4 and
                     (f+h+i)%4==(4-a[9])%4){
                       q[1]=k,q[2]=b,q[3]=c,q[4]=d,q[5]=e,q[6]=f,q[7]=g,q[8]=h,q[9]=i;
                       for(int i=1;i<=9;i++)
                         if(q[i]>0){
                           for(int j=1;j<=q[i];j++){
                             cout<<i<<" ";
                            }
                          }
                        }
  return 0;
}

这看似杂乱无章的代码,其实很简单,这不过是把初始时间挨个算出来,然后输出。

不得不说,是真的丑!!!!!

再来看看化简代码(你们自己写吧,我就不献丑了)

再回

886~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

最后叭叭几句(不会上网自己查吧)

 

标签:输出,移动,洛谷,表格,USACO1.4,int,IOI1994,时钟,指针
From: https://www.cnblogs.com/zsy-2010/p/17179429.html

相关文章

  • 进制转换 洛谷P1017
    题目传送门题目描述我们可以用这样的方式来表示一个十进制数:将每个阿拉伯数字乘以一个以该数字所处位置为指数,以 1010 为底数的幂之和的形式。例如 123123 可表......
  • 洛谷P1036
    P1036[NOIP2002普及组]选数典型的dfs,建议书写递归代码时层次应与形参列表中自己所标志的层次相对应,否则很容易混乱importjava.util.Scanner;publicclassP1036......
  • 洛谷P1030
    P1030[NOIP2001普及组]求先序排列思路:由后序遍历序列求出根由中序遍历序列求出左右子树递归上述12直到中序/后续遍历序列为空publicclassP1030{//已......
  • 洛谷P1149 [NOIP2008 提高组] 火柴棒等式
    这道题就是一个经典的暴力枚举题意是输出一共有的火柴根数,输出这些火柴棒用完可以有多少拼法下面,我们来数一数拼成十个数和两个符号(’+‘&&’=‘)各用几根火柴棒0要用......
  • 洛谷P1149 [NOIP2008 提高组] 火柴棒等式
    这道题其实很简单只是个暴力枚举!!!题目大致意思是说给你一堆火柴棒,两个符号(‘+’&&‘-’)。第一个数字‘0’用了6根火柴棒,‘1’用了2根火柴棒,依此类推......这样,我们就能......
  • 洛谷 P4048更新题面
    [JSOI2010]冷冻波题目描述WJJ喜欢“魔兽争霸”这个游戏。在游戏中,巫妖是一种强大的英雄,它的技能FrozenNova每次可以杀死一个小精灵。我们认为,巫妖和小精灵都可以看成......
  • 洛谷P4051 [JSOI2007]字符加密 题解 后缀数组sa的应用
    题目链接:https://www.luogu.com.cn/problem/P4051题目大意:给定一个长度为\(n\)的字符串\(s\),每次将\(s\)的首字符取出放到末尾……这样能得到\(n\)个字符串。将......
  • 位运算-洛谷P1469 找筷子
    位运算的符号:与(&) and当两个数在二进制下对应位数上均为 11 时,得到的结果为 11.或(|) or当两个数在二进制下对应位数上有一个为 11 时,得到的结果为 11.......
  • [洛谷]P5401 [CTS2019] 珍珠 题解
    [洛谷]P5401[CTS2019]珍珠题解题意概述有\(D\)种珍珠,每种有无限颗,现在等概率的从\(D\)种珍珠中抽\(n\)次珍珠,每次抽\(1\)个珍珠,记第\(i\)种珍珠最后一共抽......
  • 【LGR-(-17)】洛谷入门赛 #8 个人赛后总结
    【LGR-(-17)】洛谷入门赛#8个人赛后总结前言这是本蒟蒻的第一篇博客,也是对第一次参加洛谷比赛的总结,如果有错误请指出。引子本蒟蒻第一次看到比赛时就迫不及待的报了......