POJ1166 The Clocks (爆搜 || 高斯消元)
- 总时间限制: 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 (爆搜 || 高斯消元)的更多相关文章
- POJ 1166 The Clocks (爆搜 || 高斯消元)
题目链接 题意: 输入提供9个钟表的位置(钟表的位置只能是0点.3点.6点.9点,分别用0.1.2.3)表示.而题目又提供了9的步骤表示可以用来调正钟的位置,例如1 ABDE表示此步可以在第一.二.四 ...
- POJ 1166 The Clocks 高斯消元 + exgcd(纯属瞎搞)
依据题意可构造出方程组.方程组的每一个方程格式均为:C1*x1 + C2*x2 + ...... + C9*x9 = sum + 4*ki; 高斯消元构造上三角矩阵,以最后一个一行为例: C*x9 = ...
- luogu P2962 [USACO09NOV]灯Lights 高斯消元
目录 题目链接 题解 题目链接 luogu P2962 [USACO09NOV]灯Lights 题解 可以折半搜索 map合并 复杂度 2^(n / 2)*logn 高斯消元后得到每个点的翻转状态 爆 ...
- [多校2015.02.1006 高斯消元] hdu 5305 Friends
题意: 给你n个人m条关系 每条关系包括a,b 代表a和b能够是线上朋友也能够是线下朋友 然后保证每一个人的线上朋友数和线下朋友数相等 问你有多少种组成方法 思路: 官方题解是爆搜+剪枝,然而并不会写 ...
- BZOJ1770:[USACO]lights 燈(高斯消元,DFS)
Description 貝希和她的閨密們在她們的牛棚中玩遊戲.但是天不從人願,突然,牛棚的電源跳閘了,所有的燈都被關閉了.貝希是一個很膽小的女生,在伸手不見拇指的無盡的黑暗中,她感到驚恐,痛苦與絕望. ...
- [Usaco2009 Nov]lights(高斯消元)
luogu 点灯游戏应该很多人都在小时候頽过吧 反正我直到现在也不会 很明显一个灯最多只需要点一次 然后高斯消元 解完肯定剩自由元(就是那些全是0的行) 然后这些都爆搜 由于剩下的自由元不会太多 所以 ...
- POJ_1222_高斯消元
题目描述: 每组数据给出一个5*6的0 1矩阵,每次操作可以把某个位置及其四周的位置0 1置换,要求输出操作位置的矩阵. 思路: 每个位置操作2次则等于没有操作,所以每个位置有操作和不操作两种选择,爆 ...
- 高斯消元 分析 && 模板 (转载)
转载自:http://hi.baidu.com/czyuan_acm/item/dce4e6f8a8c45f13d7ff8cda czyuan 先上模板: /* 用于求整数解得方程组. */ #inc ...
- BZOJ 1770: [Usaco2009 Nov]lights 燈( 高斯消元 )
高斯消元解xor方程组...暴搜自由元+最优性剪枝 -------------------------------------------------------------------------- ...
随机推荐
- 最新NetMonitor代码
<Window x:Class="NetMonitor.MainWindow" xmlns="http://schemas.microsoft.com/winfx/ ...
- Browsersync 省时浏览器同步测试工具,浏览器自动刷新,多终端同步
官网地址 http://www.browsersync.cn/ 1.安装 BrowserSync npm install -g browser-sync 2.启动 BrowserSync // --f ...
- tensorflow API _ 6 (tf.gfile)
一.gfile模块是什么 tf.gfile模块的主要角色是:1.提供一个接近Python文件对象的API,以及2.提供基于TensorFlow C ++ FileSystem API的实现. C ++ ...
- ztree异步加载---------补发周日内容
上周六老师要求和大三的进行JAVA知识交流,总体来说就是给大三学长做的东西打分,然后大三学长再教我们如果构建ztree.毕竟第一次接触ztree,所以有很多不了解,但通过周六日努力,还是做出来了.现在 ...
- 在触发器中使用{ITEM.LASTVALUE}时在首页问题栏信息显示不全
在触发器中使用了系统宏变量,当条件满足时,如果这个宏代表的内容超过了20个字符,那么在首页信息就显示不全,会有一堆省略号 感谢https://blog.csdn.net/yu415907917/art ...
- vue中前端弹窗队列展示
在前端写一个弹窗可能很简单,那如果同时有多个弹窗呢 这样的话就要考虑弹窗的展示问题,肯定是不能叠加在一起的,这时候就要通过队列(先进先出)来展示 思路就是根据队列来实现,至于具体的实现方式,可以在项目 ...
- 计蒜客 39268.Tasks-签到 (The 2019 ACM-ICPC China Shannxi Provincial Programming Contest A.) 2019ICPC西安邀请赛现场赛重现赛
Tasks It's too late now, but you still have too much work to do. There are nn tasks on your list. Th ...
- 洛谷P1043数字游戏
题目 区间DP,将\(maxn[i][j][k]\)表示为i到j区间内分为k个区间所得到的最大值,\(minn\)表示最小值. 然后可以得到状态转移方程: \[maxn[i][j][k]= max(m ...
- ELK:使用docker搭建elk平台
1.安装ElasticSearch 1.docker pull elasticsearch //拉取镜像 2.find /var/lib/docker/overlay2/ -name jvm.opti ...
- SpringBoot:关于默认连接池Hikari的源码剖析
1.起因 因为这两天在给公司的一个项目升级SpringBoot版本,遇到了一些坑,升级项目版本:SpringBoot1.5.x到SpringBoot2.0.x 今天早上双库操作遇到一个问题:jdbcU ...