AB25 ranko的手表

这篇文章是一个编程问题,描述了一个C++程序用于计算由于手表数字不显示导致的时间间隔的最小值和最大值,给定两个可能不完整的12小时制时间作为输入。
摘要由CSDN通过智能技术生成

AB25 ranko的手表

描述
题目链接
ranko 的手表坏了,正常应该显示 xx:xx 的形式(4 个数字),比如下午 1 点半应该显示 13:30 ,但现在经常会有一些数字有概率无法显示。
这两个时刻之间相距的时间的最大值和最小值是多少?
在同一天的 00:00 到 23:59 之间。
输入描述:
两行输入两个时间,为 xx:xx 的形式。其中 xx 为数字或者字符 ‘?’ ,问号代表这个数字没有显示。
保证输入是合法的。
输出描述:
一行输出两个整数,分别代表
相距时间的最小值和最大值(单位分钟)。
示例1
输入:
18:0?
2?:1?
复制
输出:
121 319

分析:

枚举

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
	string a, b;
	cin >> a >> b;
	int total_minute = 24 * 60,mint = 1e+6,maxt = 0;
	vector<int> vec1, vec2;
	//所有情况都枚举出来
	for (int i = 0; i < total_minute; ++i) {
		int hour = i / 60, minute = i % 60;
		if ((a[0] == '?' || a[0] - '0' == hour / 10) && (a[1] == '?' || a[1] - '0' == hour % 10) && (a[3] == '?' || a[3] - '0' == minute / 10)
			&& (a[4] == '?' || a[4] - '0' == minute % 10))
			vec1.push_back(i);
		if ((b[0] == '?' || b[0] - '0' == hour / 10) && (b[1] == '?' || b[1] - '0' == hour % 10) && (b[3] == '?' || b[3] - '0' == minute / 10)
			&& (b[4] == '?' || b[4] - '0' == minute % 10))
			vec2.push_back(i);
	}
	for (int i = 0; i < vec1.size(); ++i) {
		for (int j = 0; j < vec2.size(); ++j) {
			if (vec1[i] < vec2[j]) {
				mint = min(vec2[j] - vec1[i], mint);
				maxt = max(vec2[j] - vec1[i], maxt);
			}
		}
	}
	cout << mint << " " << maxt;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值