题目名称 | 668. 时钟 |
---|---|
输入输出 | clocks.in/out |
难度等级 | ★☆ |
时间限制 | 1000 ms (1 s) |
内存限制 | 128 MiB |
测试数据 | 8 |
题目来源 | Makazeu 于2012-03-29加入 |
开放分组 | 全部用户 |
提交状态 | |
分类标签 | |
分享题解 |
通过:81, 提交:145, 通过率:55.86% | ||||
Youngsc | 100 | 0.000 s | 0.00 MiB | C++ |
lihaoze | 100 | 0.000 s | 0.00 MiB | C++ |
slyrabbit | 100 | 0.002 s | 0.29 MiB | C++ |
风间净无尘 | 100 | 0.002 s | 0.29 MiB | C++ |
瑆の時間~無盡輪迴·林蔭 | 100 | 0.002 s | 0.29 MiB | C++ |
月落九天 | 100 | 0.002 s | 0.29 MiB | C++ |
PorterCass·D·Ace | 100 | 0.002 s | 0.31 MiB | C++ |
瑆の時間~無盡輪迴·林蔭 | 100 | 0.002 s | 1.96 MiB | C++ |
wfff | 100 | 0.009 s | 0.35 MiB | C++ |
落痕 | 100 | 0.012 s | 0.70 MiB | C++ |
关于 时钟 的近10条评论(全部评论) | ||||
---|---|---|---|---|
写了一段巨生草的代码哈哈哈哈wwwwwwww
| ||||
真好用
风间净无尘
2016-07-02 10:12
3楼
| ||||
枚举更慢、、、、
| ||||
毛线啊时间这么长,BFS还是慢很多
下面是第一名的。。。。。。。。。这巨坑。 #include<cstdio> const int A[9][9] = { {3, 3, 3, 3, 3, 2, 3, 2, 0}, {2, 3, 2, 3, 2, 3, 1, 0, 1}, {3, 3, 3, 2, 3, 3, 0, 2, 3}, {2, 3, 1, 3, 2, 0, 2, 3, 1}, {2, 3, 2, 3, 1, 3, 2, 3, 2}, {1, 3, 2, 0, 2, 3, 1, 3, 2}, {3, 2, 0, 3, 3, 2, 3, 3, 3}, {1, 0, 1, 3, 2, 3, 2, 3, 2}, {0, 2, 3, 2, 3, 3, 3, 3, 3} }; int main() { freopen("clocks.in", "r", stdin); freopen("clocks.out", "w", stdout); int v[9] = {0}, i, j, k; for (i = 0; i < 9; i++) { scanf("%d", &k); for (j = 0; j < 9; j++) v[j] += (4 - k / 3) * A[i][j]; } for (i = 0; i < 9; i++) v[i] &= 3; k = 0; for (i = 0; i < 9; i++) for (j = 0; j < v[i]; j++) if (!k) printf("%d", i + 1), k = 1; else printf(" %d", i + 1); putchar(10); return 0; } |
考虑将如此安排在一个 3 x 3 行列中的九个时钟:
|-------| |-------| |-------| | | | | | | | |---O | |---O | | O | | | | | | | |-------| |-------| |-------| A B C
|-------| |-------| |-------| | | | | | | | O | | O | | O | | | | | | | | | | |-------| |-------| |-------| D E F
|-------| |-------| |-------| | | | | | | | O | | O---| | O | | | | | | | | | |-------| |-------| |-------| G H I
目标要找一个最小的移动顺序将所有的指针指向12点。下面原表格列出了9种不同的旋转指针的方法,每一种方法都叫一次移动。选择1到9号移动方法,将会使在表格中对应的时钟的指针顺时针旋转90度。
移动方法 受影响的时钟 1 ABDE 2 ABC 3 BCEF 4 ADG 5 BDEFH 6 CFI 7 DEGH 8 GHI 9 EFHI
例如,如下即为一种变换方案。
9 9 12 9 12 12 9 12 12 12 12 12 12 12 12 6 6 6 5 -> 9 9 9 8-> 9 9 9 4 -> 12 9 9 9 -> 12 12 12 6 3 6 6 6 6 9 9 9 12 9 9 12 12 12 [但这可能不是正确的方法,请看下面]
第1-3行: 三个空格分开的数字,每个数字表示一个时钟的初始时间,3,6,9,12。数字的含意和上面第一个例子一样。
单独的一行包括一个用空格分开的将所有指针指向12:00的最短移动顺序的列表。
如果有多种方案,输出那种使其连接起来数字最小的方案。(举例来说5 2 4 6 < 9 3 1 1)。
9 9 12 6 6 6 6 3 6
4 5 8 9