#include <bits/stdc++.h>
using namespace std;
vector<int> v1,v2;
int cal(string str){
int res = ((str[0]-'0') * 10 + (str[1]-'0')) * 60+
(str[2]-'0') * 10 + (str[3]-'0');
return res%1440;
}
void dfs(string str,int u,int op){
if(u==int(str.size())){
if(stoi(str.substr(0,2))>23) return;
if(stoi(str.substr(2))>59) return;
if(op==1) v1.emplace_back(cal(str));
else v2.emplace_back(cal(str));
return;
}
if(str[u]=='?'){
for(char i = '0';i<='9';i++){
string t = str;
t[u] = i;
dfs(t,u+1,op);
}
}
else{
dfs(str,u+1,op);
}
}
int main(){
string str1,str2;
cin>>str1>>str2;
str1 = str1.substr(0,2) + str1.substr(3);
str2 = str2.substr(0,2) + str2.substr(3);
dfs(str1,0,1);
dfs(str2,0,2);
int ma = -1e9,mi = 1e9;
for(auto a : v1){
for(auto b : v2){
if(a>=b) continue;
ma = max(ma,b-a);
mi = min(mi,b-a);
}
}
cout<<mi<<" "<<ma;
return 0;
}
暴力算出各种结果,然后for循环计算最大,最小值
#牛客春招刷题训练营#https://www.nowcoder.com/discuss/727521113110073344

京公网安备 11010502036488号