输入描述
输入为一个整数数组,数组内有六个整数。
输入整数数组长度为6, 不需要考虑其他长度,元素值为0或者正整数,6个数字每个数字只能使用一次。
输出描述
输出为一个24进制格式的时间,或者字符串“invalid”
示例:
输入
[0,2,3,0,5,6]
输出
23:56:00
输入
[9,9,9,9,9,9]
输出
invalid
解题思路:
这道题要求C/C++运行时间小于3秒,感觉是可以用暴搜的。因为考之前没刷过题,图简单就直接上暴搜了。
基本思路是对于输入的6个数字,遍历所有的排列情况,因为24进制时间本身对时、分、秒数字有大小约束,所以加上剪枝实际上不需要遍历所有的情况。对于每一种合法的时间相互之间比较大小(换算成秒)
代码
#include <iostream>
#include <string>
#include <vector>
using namespace std;
// 根据输入的6位时间表示计算其秒数(以秒为单位的数字)
double absolute_time(const vector<int>& nums)
{
int hour = nums[0] * 10 + nums[1];
int minu = nums[2] * 10 + nums[3];
int sec = nums[4] * 10 + nums[5];
if (hour &g