1791: Time To Get Up
题目描述:
Little Q's clock is alarming! It's time to get up now! However, after reading the time on the clock, Little Q lies down and starts sleeping again. Well, he has 5 alarms, and it's just the first one, he can continue sleeping for a while.
Little Q's clock uses a standard 7-segment LCD display for all digits, plus two small segments for the '':'', and shows all times in a 24-hour format. The '':'' segments are on at all times.
Your job is to help Little Q read the time shown on his clock.
输入:
The first line of the input contains an integer T(1≤T≤1440), denoting the number of test cases.
In each test case, there is an 7×21 ASCII image of the clock screen.
All digit segments are represented by two characters, and each colon segment is represented by one character. The character ''X'' indicates a segment that is on while ''.'' indicates anything else. See the sample input for details.
输出:
For each test case, print a single line containing a string t in the format of HH:MM, where t(00:00≤t≤23:59), denoting the time shown on the clock.
1 .XX...XX.....XX...XX.X..X....X......X.X..X
X..X....X.X....X.X..X
......XX.....XX...XX.
X..X.X....X....X.X..X
X..X.X.........X.X..X
.XX...XX.....XX...XX.
02:38
图中给了 0238 四个数字 根据规律可找其他数字的排列
直接暴力
预写在三维数组 然后匹配即可
# include "bits/stdc++.h" using namespace std; char mp[11][8][5] = { {".XX.", "X..X", "X..X", "....", "X..X", "X..X", ".XX."}, // 0 { "....", "...X", "...X", "....", "...X", "...X", "...." }, //1 { ".XX.", "...X", "...X", ".XX.", "X...", "X...", ".XX." }, { ".XX.", "...X", "...X", ".XX.", "...X", "...X", ".XX." }, { "....", "X..X", "X..X", ".XX.", "...X", "...X", "...." }, { ".XX.", "X...", "X...", ".XX.", "...X", "...X", ".XX." }, { ".XX.", "X...", "X...", ".XX.", "X..X", "X..X", ".XX." }, { ".XX.", "...X", "...X", "....", "...X", "...X", "...." }, { ".XX.", "X..X", "X..X", ".XX.", "X..X", "X..X", ".XX." }, { ".XX.", "X..X", "X..X", ".XX.", "...X", "...X", ".XX." } }; char c[8][22]; int check(int x) { for(int i = 0;i < 10;i ++) { bool flag = true; for(int j = 0;j < 7;j ++) { for(int k = 0;k < 4;k ++) { if(mp[i][j][k] != c[j][k + x]) flag = false; } if(!flag) break; } if(flag) return i; } return -1; } int main() { int t; cin >> t; while(t --) { memset(c,'.',sizeof(c)); for(int i = 0;i < 7;i ++) { cin >> c[i]; } vector<int> v; v.clear(); v.push_back(check(0)); v.push_back(check(5)); v.push_back(check(12)); v.push_back(check(17)); cout << v[0] << v[1] << ":" << v[2] << v[3] << endl; } return 0; } // 0-3 5-8 12-15 17-21