总时间限制: 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. sql null+字符=null

    哦,谢谢你,我还想问一个declare @temp varchar(10),@identity varchar(10),@sura varchar(10),@p int,@len int,@nod1  ...

  2. if语句的嵌套:从键盘输入3个实数,求其最大值。

    #include<stdio.h>void main(){ float a,b,c,max; scanf("%f%f%f",&a,&b,&c); ...

  3. MySQL高级管理

    #mysql数据库密码的修改 一.mysql密码的修改与恢复 1.修改密码 mysqladmin -u root -p123 password 456 数据库内修改 method.first: upd ...

  4. centos7最小化安装无法tab补全

    yum install -y bash-completion 安装完后reboot重启生效

  5. 持续集成学习11 jenkins和gitlab集成自动触发

    一.配置gitlab上提交代码后在jenkins上自动构建 1.在jenkins上配置gitlab 系统管理--->系统设置--->gitlab配置 2.在gitlab上配置token 3 ...

  6. BZOJ 5495: [2019省队联测]异或粽子 可持久化trie+堆

    和超级钢琴,异或之三倍经验 $?$ 堆+贪心素质三连 $?$ 好无聊...... code: #include <bits/stdc++.h> #define N 500006 #defi ...

  7. k8s 基础概念

    摘录自k8s中文社区https://www.kubernetes.org.cn/course kubernetes 源自希腊文,意为舵手,k与s之间是8个字母,所以也叫k8s, docker就像一个个 ...

  8. THUPC&CTS 2019 游记

    day ? 去THU报了个到. day? THUPC比赛日,三个人都没有智商,各种签到题不会做,被各路神仙吊着打.G题还猜了个假结论,做了好久都不对.最后顺利打铁了. 还顺便去看一下THUAC. da ...

  9. 【JOISC2018|2019】【20190622】minerals

    题目 交互题 有\(2n\)个物品,编号为\(1-2n\),存在唯一的两两配对关系,即有\(n\)种物品 有一个盒子,初始为空,盒子上会显示里面存在的物品种类数\(C\) 你每次操作可以将一个物品从盒 ...

  10. 【cf contest 1119 G】Get Ready for the Battle

    题目 你有\(n\)个士兵,需要将他们分成\(m\)组,每组可以为0: 现在这些士兵要去攻打\(m\)个敌人,每个敌人的生命值为\(hp_i\) : 一轮游戏中一组士兵选定一个攻打的敌人,敌人生命值- ...