博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P1213 时钟
阅读量:5077 次
发布时间:2019-06-12

本文共 2276 字,大约阅读时间需要 7 分钟。

题目描述

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

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

移动方法 受影响的时钟

1 ABDE

2 ABC

3 BCEF

4 ADG

5 BDEFH

6 CFI

7 DEGH

8 GHI

9 EFHI

Example

[但这可能不是正确的方法,请看下面]

输入格式

第1-3行: 三个空格分开的数字,每个数字表示一个时钟的初始时间,3,6,9,12。数字的含意和上面第一个例子一样。

输出格式

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

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

输入输出样例

输入 #1复制
9 9 126 6 66 3 6
输出 #1复制
4 5 8 9

说明/提示

题目翻译来自NOCOW。

USACO Training Section 1.4

 

我说它是暴力枚举,你信吗。。。。。。

 

#include 
using namespace std;struct node{ int state[9]; string ans;};const bool movement[9][9] = { {
1,1,0,1,1,0,0,0,0}, {
1,1,1,0,0,0,0,0,0}, {
0,1,1,0,1,1,0,0,0}, {
1,0,0,1,0,0,1,0,0}, {
0,1,0,1,1,1,0,1,0}, {
0,0,1,0,0,1,0,0,1}, {
0,0,0,1,1,0,1,1,0}, {
0,0,0,0,0,0,1,1,1}, {
0,0,0,0,1,1,0,1,1}};int state[9];inline bool checkOK(int state[]){ for(int i=0;i<9;i++){ if(state[i] != 4) return false; } return true;}string ans = "";bool vis[5][5][5][5][5][5][5][5][5];queue
q;void bfs(){ node tt; for(int j=0;j<9;j++){ tt.state[j] = state[j]; } tt.ans = ""; q.push(tt); while(!q.empty()){ node now = q.front(); q.pop(); if(checkOK(now.state)){ ans = now.ans; return; } for(int i=0;i<9;i++){ node nextn=now; for(int k=0;k<9;k++){ nextn.state[k]=(nextn.state[k]+movement[i][k])%5; if(nextn.state[k] == 0) nextn.state[k] = 1; } nextn.ans += (char)('0'+i+1); if(!vis[nextn.state[0]][nextn.state[1]][nextn.state[2]][nextn.state[3]][nextn.state[4]][nextn.state[5]][nextn.state[6]][nextn.state[7]][nextn.state[8]]){ q.push(nextn); vis[nextn.state[0]][nextn.state[1]][nextn.state[2]][nextn.state[3]][nextn.state[4]][nextn.state[5]][nextn.state[6]][nextn.state[7]][nextn.state[8]] = true; } } }}int main(){ ios::sync_with_stdio(false); cin.tie(0); for(int i=0;i<9;i++){ int time; cin>>time; state[i] = time / 3; } memset(vis,false,sizeof vis); bfs(); for(int i=0;i

 

转载于:https://www.cnblogs.com/hrj1/p/11565589.html

你可能感兴趣的文章
实验五 Java网络编程及安全
查看>>
32位与64位 兼容编程
查看>>
iframe父子页面通信
查看>>
ambari 大数据安装利器
查看>>
java 上传图片压缩图片
查看>>
magento 自定义订单前缀或订单起始编号
查看>>
ACM_拼接数字
查看>>
计算机基础作业1
查看>>
Ubuntu 深度炼丹环境配置
查看>>
C#中集合ArrayList与Hashtable的使用
查看>>
从一个标准 url 里取出文件的扩展名
查看>>
map基本用法
查看>>
poj-1163 动态规划
查看>>
Golang之interface(多态,类型断言)
查看>>
Redis快速入门
查看>>
BootStrap---2.表格和按钮
查看>>
Linear Algebra lecture 2 note
查看>>
CRC计算模型
查看>>
Ajax之404,200等查询
查看>>
Aizu - 1378 Secret of Chocolate Poles (DP)
查看>>