数据结构和算法:警察根据线人提供的加密时间破案
内卷之源:
暂无
题目描述:
* 线人提供加密的时间,警官需要解密。
* 实际时间在输入时间之后的最近的时间点。
* 一个数字可重复用多次,但不能无中生有。
*
* 备注:(1)输入由用例保证,不会出现类似1:35和01:5之类的输入
* (2)时间可能在第二天
测试用例:
Input | Output |
01:35 | 01:50 |
23:59 | 22:22 |
22:59 | 22:22 |
23:45 | 23:52 |
19:34 | 19:39 |
18:52 | 18:55 |
20:12 | 20:20 |
06:58 | 08:00 |
思路分析:
真实时间在输入时间之后,数字可重复用多次,因此将组成时间的四个数字拆开,两两组合,最多16种,然后从中选出大于输入的时间组合即可。但要注意:H∈[00,23],M∈[00,59]
编程实现(C++):
/************************************************************** @author SLF* @version V1.0.0* @date 05-Jul-2021*************************************************************/
#include <iostream>
#include <iomanip>
#include <array>
#include <algorithm> //sortusing namespace::std;int main(void)
{int H, M; //小时、分钟int split[4] = {0};// array<int, 16> H_M_gen_stl = {0};int H_M_gen[16] = {0}; //将24小时制的四个数字重新组成两位数int H_M_gen_num = 0;scanf("%d:%d", &H, &M);split[0] = H/10;split[1] = H%10;split[2] = M/10;split[3] = M%10;//generatefor(int i = 0, j = 0, t = 0; 4 > i; ++i){if(5 < (t = split[i])) //分钟显示不超过59{continue;}for(j = 0; 4 > j; ++j){H_M_gen[H_M_gen_num] = 10*t + split[j];// H_M_gen_stl[H_M_gen_num] = 10*t + split[j];++H_M_gen_num;}}// sort(H_M_gen_stl.begin(), H_M_gen_stl.begin() + H_M_gen_num);//select sortint inx_min = 0;bool exchg = false;for(int i = 0, j = 0, t = H_M_gen_num - 1; t > i; ++i){inx_min = j = i;while(H_M_gen_num > (++j)){if(H_M_gen[inx_min] > H_M_gen[j]){inx_min = j;exchg = true;}}if(exchg){exchg = false;swap(H_M_gen[inx_min], H_M_gen[i]);}}//decrypt crime timeif((23 == H) && (H_M_gen[H_M_gen_num -1] == M)){//若H是23时,且M是最大分钟数,则次日最早时间cout << setfill('0') << setw(2) << H_M_gen[0] << ":" << setw(2) << H_M_gen[0] << endl; //排序后第一个数绝对小于23// printf("%02d:%02d\n", H_M_gen[0], H_M_gen[0]);return 0;}for(int i = 0; H_M_gen_num > i; ++i){//基于H,判断Mif(M < H_M_gen[i]){cout << setfill('0') << setw(2) << H << ":" << setw(2) << H_M_gen[i] << endl;return 0;}}//相同H,M最大//下一个最小时间组合for(int i = 0, t = H_M_gen_num - 1; H_M_gen_num > i; ++i){if((24 > H_M_gen[i]) && (H < H_M_gen[i])){cout << setfill('0') << setw(2) << H_M_gen[i] << ":" << setw(2) << H_M_gen[0] << endl;return 0;}if(t == i) //次日{cout << setfill('0') << setw(2) << H_M_gen[0] << ":" << setw(2) << H_M_gen[0] << endl;return 0;}}return 0;
}
郑重提示:①解题思路非最优,覆盖条件可能不全,仅供练习参考。
②若有更佳思路或疑问,可在评论区留言相互讨论,不亦乐乎。
③本文不允许转载,若认可本文,可点赞收藏关注。
数据结构和算法:警察根据线人提供的加密时间破案相关推荐
- python【解密犯罪时间】警察在侦破一个案件时,得到了线人给出的可能犯罪时间,形如“HH:MM”表示的时刻。
警察在侦破一个案件时,得到了线人给出的可能犯罪时间,形如"HH:MM"表示的时刻. 根据警察和线人的约定,为了隐蔽,该时间时修改过的,解密规则为:利用当前出现过的数字,构造下一个距 ...
- vrp 节约算法 c++_数据结构和算法(Golang实现)(8.1)基础知识-前言
基础知识 学习数据结构和算法.我们要知道一些基础的知识. 一.什么是算法 算法(英文algorithm)这个词在中文里面博大精深,表示算账的方法,也可以表示运筹帷幄的计谋等.在计算机科技里,它表示什么 ...
- 数据结构与算法 --- 第一章 绪论
数据结构与算法 第一章 绪论 1. 作者的话 2. 为什么要学习数据结构与算法 3. 数据结构与算法的作用 4. 数据结构的概念 4.1 名词解读 4.2 什么是数据 4.3 数据结构 4.4 逻辑结 ...
- 从这个11.11开始,终结数据结构与算法的噩梦
双十一电商大战一触即发,各大平台都在进行降价促销活动,0点后又有不少人要买买买了,薅羊毛之余,别忘了极客时间双十一也有一波优惠活动,很多专栏都在限时降价. DD要给大家推荐的这个专栏也是其中之一--& ...
- 树的高度从零还是一开始数_数据结构与算法之1——树与二叉树
数据结构一直是让人头疼,面试遇到手撕算法题时真是慌得不行,从啥也不会刷题刷到游刃有余,路漫漫其修远兮~~.本人还是个算法菜鸟,而且还是想转行互联网的半吊子(好想拿大厂offer啊,幻想中..),希望能 ...
- 学习数据结构和算法前瞻
我并非计算机科班出身,以前只对C.java.Matlab.Python语言有粗略的了解,以前写代码的时候只会考虑功能能实现就行了,并不考虑性能方面的问题,对数据结构与算法从未学习过,更不了解什么时间复 ...
- 大一学生数据结构与算法的先后取舍
[来信] 在上学期,突然一天一位学长问我要选择哪个方向,指的是算法和一般的开发.我回答他算法,而他说我对语言学的太心急,太快,不像是喜欢算法的,并和我说算法玩玩就好,不要陷得太深,并建议我走一般开发的 ...
- 数据结构 - Java -韩顺平 图解Java数据结构和算法
数据结构 Lesson 1 数据结构的知识总结 1. 几个经典的算法面试题 2. 线性结构与非线性结构 2.1 稀疏数组 sparsearray 2.2 队列 2.2.1 顺序队列: 2.2.2 环形 ...
- 一.Java数据结构与算法:如何开始
数据结构和算法是计算机科学的核心概念之一,它们在软件开发中起着至关重要的作用.学习Java数据结构和算法不仅有助于提高编程能力,还能让你在面试和职业发展中脱颖而出.本文将为你介绍数据结构和算法的重要性 ...
最新文章
- php linux 调试工具,内网Visual Studio Code通过XDebug远程调试linux服务器PHP脚本
- 第一次使用Winhex直接修改文件二进制数据
- Python之max(num, key=lambda x:x[0])用法的详细解析
- 刚刚,阿里发布AI谣言粉碎机,识别准确率达81%
- 蚂蚁金服CTO鲁肃:支付宝成就了我,我做了很多“拧螺丝”的事儿
- CodeForces - 1373E Sum of Digits(贪心)
- 有关不蒜子访问统计无法显示的解决方法
- xml转化为kml_借助ogr2ogr工具实现shp文件转换kml格式
- dhcp服务器分配指定ip,DHCP服务(自动分配IP、绑定固定IP)
- Caffe环境搭建指北
- java小游戏跳棋_Java跳棋小游戏源代码
- java设计模式(创建型)之生成器模式
- 华为USG6000V防火墙的初始密码及修改密码的操作
- Axure中级教程:管理后台内容模板(中继器全交互详解)
- win7电脑蓝屏没有修复计算机,Win7旗舰版系统电脑老是出现蓝屏的修复教程
- 【5G NR】SSB
- IBM服务器微软集群安装
- cocos2dx 3.17海外sdk接入填坑全纪录 Appodeal(广告) SDK 接入(5)
- mysql卸载不掉? 帮你清理注册表,重新安装数据库mysql
- 突破软件测试的瓶颈(上)