总时间限制: 1000ms,内存限制: 65536kB
描述
|-------|    |-------|    |-------|
| | | | | | |
|---O | |---O | | O |
| | | | | |
|-------| |-------| |-------|
A B C |-------| |-------| |-------|
| | | | | |
| O | | O | | O |
| | | | | | | | |
|-------| |-------| |-------|
D E F |-------| |-------| |-------|
| | | | | |
| O | | O---| | O |
| | | | | | | |
|-------| |-------| |-------|
G H I
(Figure )

There are nine clocks in a 3*3 array (figure 1). The goal is to return all the dials to 12 o'clock with as few moves as possible. There are nine different allowed ways to turn the dials on the clocks. Each such way is called a move. Select for each move a number 1 to 9. That number will turn the dials 90' (degrees) clockwise on those clocks which are affected according to figure 2 below.

Move   Affected clocks

          ABDE
ABC
BCEF
ADG
BDEFH
CFI
DEGH
GHI
EFHI
(Figure )

输入

Your program is to read from standard input. Nine numbers give the start positions of the dials. 0=12 o'clock, 1=3 o'clock, 2=6 o'clock, 3=9 o'clock.

输出

Your program is to write to standard output. Output a shortest sorted sequence of moves (numbers), which returns all the dials to 12 o'clock. You are convinced that the answer is unique.

样例输入


样例输出

   

学枚举时候的课程作业,第一次接触到爆搜的魅力,实在是香。不过这题还可以用高斯消元,也是学到了。

爆搜代码

#include <string.h>
#include <stdio.h>
int main()
{
int i, a[], b[], c[]; //多开一位空间,安全,b[i]就是第i种Move,c[i]就是Move之后第i个时钟的状态
for (i = ; i <= ; i++)
scanf("%d", &a[i]); //读入初始状态
//枚举每一种移动方法,每一种可实施0,1,2,3次
for (b[] = ; b[] <= ; b[]++)
for (b[] = ; b[] <= ; b[]++)
for (b[] = ; b[] <= ; b[]++)
for (b[] = ; b[] <= ; b[]++)
for (b[] = ; b[] <= ; b[]++)
for (b[] = ; b[] <= ; b[]++)
for (b[] = ; b[] <= ; b[]++)
for (b[] = ; b[] <= ; b[]++)
for (b[] = ; b[] <= ; b[]++)
{
c[] = (a[] + b[] + b[] + b[]) % ;
c[] = (a[] + b[] + b[] + b[] + b[]) % ;
c[] = (a[] + b[] + b[] + b[]) % ;
c[] = (a[] + b[] + b[] + b[] + b[]) % ;
c[] = (a[] + b[] + b[] + b[] + b[] + b[]) % ;
c[] = (a[] + b[] + b[] + b[] + b[]) % ;
c[] = (a[] + b[] + b[] + b[]) % ;
c[] = (a[] + b[] + b[] + b[] + b[]) % ;
c[] = (a[] + b[] + b[] + b[]) % ;
if (c[] + c[] + c[] + c[] + c[] + c[] + c[] + c[] + c[] == )
{
for (i = ; i < b[]; i++) printf("1 ");
for (i = ; i < b[]; i++) printf("2 ");
for (i = ; i < b[]; i++) printf("3 ");
for (i = ; i < b[]; i++) printf("4 ");
for (i = ; i < b[]; i++) printf("5 ");
for (i = ; i < b[]; i++) printf("6 ");
for (i = ; i < b[]; i++) printf("7 ");
for (i = ; i < b[]; i++) printf("8 ");
for (i = ; i < b[]; i++) printf("9 ");
printf("\n");
return();
}
}
}

高斯消元做法链接:

https://blog.csdn.net/sf____/article/details/9863927

POJ1166 The Clocks (爆搜 || 高斯消元)的更多相关文章

  1. POJ 1166 The Clocks (爆搜 || 高斯消元)

    题目链接 题意: 输入提供9个钟表的位置(钟表的位置只能是0点.3点.6点.9点,分别用0.1.2.3)表示.而题目又提供了9的步骤表示可以用来调正钟的位置,例如1 ABDE表示此步可以在第一.二.四 ...

  2. POJ 1166 The Clocks 高斯消元 + exgcd(纯属瞎搞)

    依据题意可构造出方程组.方程组的每一个方程格式均为:C1*x1 + C2*x2 + ...... + C9*x9 = sum + 4*ki; 高斯消元构造上三角矩阵,以最后一个一行为例: C*x9 = ...

  3. luogu P2962 [USACO09NOV]灯Lights 高斯消元

    目录 题目链接 题解 题目链接 luogu P2962 [USACO09NOV]灯Lights 题解 可以折半搜索 map合并 复杂度 2^(n / 2)*logn 高斯消元后得到每个点的翻转状态 爆 ...

  4. [多校2015.02.1006 高斯消元] hdu 5305 Friends

    题意: 给你n个人m条关系 每条关系包括a,b 代表a和b能够是线上朋友也能够是线下朋友 然后保证每一个人的线上朋友数和线下朋友数相等 问你有多少种组成方法 思路: 官方题解是爆搜+剪枝,然而并不会写 ...

  5. BZOJ1770:[USACO]lights 燈(高斯消元,DFS)

    Description 貝希和她的閨密們在她們的牛棚中玩遊戲.但是天不從人願,突然,牛棚的電源跳閘了,所有的燈都被關閉了.貝希是一個很膽小的女生,在伸手不見拇指的無盡的黑暗中,她感到驚恐,痛苦與絕望. ...

  6. [Usaco2009 Nov]lights(高斯消元)

    luogu 点灯游戏应该很多人都在小时候頽过吧 反正我直到现在也不会 很明显一个灯最多只需要点一次 然后高斯消元 解完肯定剩自由元(就是那些全是0的行) 然后这些都爆搜 由于剩下的自由元不会太多 所以 ...

  7. POJ_1222_高斯消元

    题目描述: 每组数据给出一个5*6的0 1矩阵,每次操作可以把某个位置及其四周的位置0 1置换,要求输出操作位置的矩阵. 思路: 每个位置操作2次则等于没有操作,所以每个位置有操作和不操作两种选择,爆 ...

  8. 高斯消元 分析 && 模板 (转载)

    转载自:http://hi.baidu.com/czyuan_acm/item/dce4e6f8a8c45f13d7ff8cda czyuan 先上模板: /* 用于求整数解得方程组. */ #inc ...

  9. BZOJ 1770: [Usaco2009 Nov]lights 燈( 高斯消元 )

    高斯消元解xor方程组...暴搜自由元+最优性剪枝 -------------------------------------------------------------------------- ...

随机推荐

  1. Dubbo源码分析:Server

    Server接口是开启一个socket服务.服务实现有netty,mina,grizzly的. 抽象时序图 获取NettyServer时序图 Transporter类图 Server 类图

  2. (生鲜项目)05. RESTful api, 和 VUE

    第一步: 什么是 RESTful api 总结: 使用http协议作为介质, 达到客户端修改服务器端资源的目的, 服务器只需要提供指定的api接口, 客户端根据http协议中的post/get/put ...

  3. 关于原生js的节点兼容性

    关于节点的兼容性: 1:获取元素的子节点 a: childNodes:获取元素的子节点,空文本,非空文本,注释,获取的比较全面, 如果只是想获取元素的子节点,请用(children) b:     c ...

  4. python - 手机号正则匹配

    Python 手机号正则匹配 # -*- coding:utf-8 -*- import re def is_phone(phone): phone_pat = re.compile('^(13\d| ...

  5. LeetCode 358. Rearrange String k Distance Apart

    原题链接在这里:https://leetcode.com/problems/rearrange-string-k-distance-apart/description/ 题目: Given a non ...

  6. HDU 6091 - Rikka with Match | 2017 Multi-University Training Contest 5

    思路来自 某FXXL 不过复杂度咋算的.. /* HDU 6091 - Rikka with Match [ 树形DP ] | 2017 Multi-University Training Conte ...

  7. 实训作业6 (数据I/O)

    1. 文件输出流的应用. 定义如下字符串: String str = “12345abcdef@#%&*软件工程”; 编写程序将该字符串写入文件”data.txt”. import java. ...

  8. S1_搭建分布式OpenStack集群_11 虚拟机创建

    一.创建网络环境环境变量生效一下创建一个网络:# openstack network create --share --external \--provider-physical-network ph ...

  9. WinDbg常用命令系列---!heap

    !heap 简介 !heap扩展显示堆使用信息.控制堆管理器中的断点.检测泄漏的堆块.搜索堆块或显示页堆信息.此扩展支持段堆和NT堆.使用!heap没有参数列出所有堆及其类型的堆. 使用形式 !hea ...

  10. 解决IE报错:Locale 'chinese' is not well-formed,或RangeError: 区域设置“chinese”的格式不正确的问题

    接之前的此博客问题处理:js处理时间时区问题 由于 toLocaleString():据本地时间格式,把 Date 对象转换为字符串.总是会带有上午/下午,所以我加了参数:new Date('2019 ...