【华为2019年校园招聘】2019-4-17 软件题-最大时间问题

本文介绍了华为2019年校园招聘中的一道软件题目,涉及寻找最大24进制时间的问题。解题者采用暴力搜索策略,通过遍历6个数字的所有合法排列,并利用剪枝优化,确保在3秒内完成C/C++程序的运行。解题思路和代码实现被详细说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

输入描述

输入为一个整数数组,数组内有六个整数。
输入整数数组长度为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
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值