算法-解密犯罪时间(回溯求全排列

要求的时间需要晚于当前时间且和当前时间最近。时间串里一共四个数字字符,做全排列即可,使用到回溯算法。把时间串里的“:”剔除后,做回溯爆搜,每取4个字符就判断一次:1.作为时间串是否合法;2.如果合法,反应到最终结果中去;

特殊处理1:当以输入时间串得不到更大的时间时,说明比当前时间更晚的是第二天的时间,又要求这个时间离当前时间最近,所以直接取能得到的最小时间即可。

特殊处理2:当输入“00:00”,“11:11”,“22:22”这些四个位置都相同的时间串时,答案是其本身,含义:第二天的同一时刻。

import java.util.*;
public class Main{public static List<Character> path=new ArrayList<>();public static int base,min=Integer.MAX_VALUE,diff=Integer.MAX_VALUE;public static String ans="",original,minStr="";public static void main(String[] args){Scanner in=new Scanner(System.in);String s=in.nextLine();String[] a=s.split(":");List<Character> list=new ArrayList<>();original=a[0]+a[1];char c=original.charAt(0);int flag=0;list.add(c);for(int i=1;i<4;i++){if(original.charAt(i)!=c){flag=1;}list.add(original.charAt(i));}if(flag==0){System.out.println(s);return;}base=toMinutes(original);dfs(list);if(ans.length()==0){ans=minStr;}ans=ans.substring(0,2)+":"+ans.substring(2,4);System.out.println(ans);}public static void dfs(List<Character> list){if(path.size()==4){String s="";for(char ch:path){s+=ch;  }if(!s.equals(original)&&check(s)){int v=toMinutes(s),d=Math.abs(v-base);// 维护一个最小值,当“没有大于base”发生时,作为最后的值if(v<min){min=v;minStr=s;}if(v>base&&d<diff){ans=s;diff=d;}}return;}for(int i=0;i<4;i++){path.add(list.get(i));dfs(list);path.remove(path.size()-1);}}public static int toMinutes(String s){int h=Integer.parseInt(s.substring(0,2)),m=Integer.parseInt(s.substring(2,4));return h*60+m;}public static boolean check(String s){int h=Integer.parseInt(s.substring(0,2)),m=Integer.parseInt(s.substring(2,4));return h>=0&&h<=23&&m>=0&&m<=59;        }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/9813.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

广告的两面性:艺术创造独特性,科学带来确定性

奥美广告的创始人大卫奥格威说&#xff0c;克劳德霍普金斯的著作「科学的广告」值得所有从业者至少读上7遍&#xff0c;否则没有资格进入广告行业。 但其实奥格威和霍普金斯是完全不同类型的广告人&#xff0c;如果用品效合一或者品效协同的概念来区分&#xff0c;奥格威显然是…

H5 处理点击元素高亮、自定义按钮、去除焦点边框

1、设置移动设备上点击元素时出现的高亮颜色 *{-webkit-tap-highlight-color: transparent; }2、如果你想要自定义按钮的样式&#xff0c;你可以使用 -webkit-appearance: none; 来移除按钮的默认样式 .button {-webkit-appearance: none;appearance: none; /* 兼容性更好的通…

光检测器——光纤通信学习笔记七

光检测器 光检测器的基本介绍 作用&#xff1a;把接受到的光信号转换成电信号 光接收器的灵敏度、光源的发光功率和光纤的损耗三者决定了光纤通信的传输距离&#xff1b; 光电二极管 光电转换的基本原理 之前提到&#xff0c;PN结由于内部载流子的扩散运动形成了内部电场&…

操作系统之I/O控制方式

1.程序直接控制方式 &#xff08;1&#xff09;读操作的流程 1&#xff09;CPU向I/O控制器发出读指令。I/O控制器启动&#xff0c;将自身状态置为忙碌态。CPU一直轮询检查I/O控制器的状态 2&#xff09;I/O控制器启动CPU指定的I/O设备&#xff0c;并将该I/O设备的状态置为忙碌…

Hive Windows Functions 窗口函数

Hive Windows Functions 窗口函数 在 Hive 中&#xff0c;窗口函数&#xff08;Window Functions&#xff09;用于在查询结果中执行聚合、排序和分析操作&#xff0c;而无需将数据分组。窗口函数允许你在查询结果中的一组行上执行计算&#xff0c;而不会改变原始数据的行数&am…

Vue3知识总结-1

前面学习一段时间的前端&#xff0c;但是没有进行过太多的练习&#xff0c;并且对于里面一些重要的知识点也没有去着重的记忆&#xff0c;所以打算在学习Vue3的时候&#xff0c;做一些笔记&#xff0c;方便后面翻看。这个笔记会对于学习一些做一些&#xff0c;而不是一个整体的…

前端之深拷贝

前提&#xff1a; 就是在实际开发中&#xff0c;我有一个编辑的弹窗&#xff0c;可以查看和编辑&#xff0c;因为弹窗里面是一个步骤条&#xff0c;点击下一步就要向对应的接口发送请求&#xff0c;考虑到就比如我点击下一步&#xff0c;此次表箱信息其实不需要修改&#xff0…

推荐 6 个超好用的 iterm2 zsh 插件

大家好啊&#xff0c;今天给大家分享几个我日常使用的 iterm2 插件&#xff0c;每一个都很有用&#xff0c;希望能给帮助你提高使用命令行的效率&#xff5e; zsh-autosuggestions 插件地址&#xff1a;https://github.com/zsh-users/zsh-autosuggestions 效果展示 当你输入…

AI中转站计费平台系统源码一站式解决方案安装说明

AI中转站计费平台系统源码一站式解决方案安装说明 功能 | Features AI 联网功能 AI online searching service 多账户均衡负载 Multi-account load balancing HTTP2 Stream 实时响应功能 HTTP2 Stream real-time response function 节流和鉴权体系 Throttling and authenticati…

【17-Ⅱ】Head First Java 学习笔记

HeadFirst Java 本人有C语言基础&#xff0c;通过阅读Java廖雪峰网站&#xff0c;简单速成了java&#xff0c;但对其中一些入门概念有所疏漏&#xff0c;阅读本书以弥补。 第一章 Java入门 第二章 面向对象 第三章 变量 第四章 方法操作实例变量 第五章 程序实战 第六章 Java…

开源代码分享(28)-含分布式光伏的配电网集群划分和集群电压协调控制

参考文献&#xff1a; [1] Chai Y , Guo L , Wang C ,et al.Network Partition and Voltage Coordination Control for Distribution Networks With High Penetration of Distributed PV Units[J].IEEE Transactions on Power Systems, 2018:3396-3407.DOI:10.1109/TPWRS.2018…

基于微信小程序的校园二手交易平台设计与实现(论文+源码)_kaic

基于微信小程序的校园二手交易平台 设计与实现 摘 要 随着绿色低碳消费和循环经济的理念越来越深入人心,大学生二手商品市场发展迅猛&#xff0c;而大部分二手交易平台运输方式与收售方式对于大学生用户群体并不适用&#xff0c;所以急需一款针对大学生二手商品交易的软件&…

搜索的未来:OpenAI 的 GPT 如何彻底改变行业

搜索的未来&#xff1a;OpenAI 的 GPT 如何彻底改变行业 概述 搜索引擎格局正处于一场革命的风口浪尖&#xff0c;而 OpenAI 的 GPT 处于这场变革的最前沿。最近出现了一种被称为“im-good-gpt-2-chatbot”的神秘聊天机器人&#xff0c;以及基于 ChatGPT 的搜索引擎的传言&am…

聊天打字轻松赚钱:1毛一条,值得一试!

聊天打字轻松赚钱&#xff1a;1毛一条&#xff0c;值得一试&#xff01; 在如今信息爆炸的时代&#xff0c;人们的注意力愈发分散&#xff0c;但同时也催生了许多新的职业和赚钱方式。其中&#xff0c;聊天打字赚钱成为了越来越受人欢迎的一种方式&#xff0c;其简便性和高效性…

WebSocket基础知识

WebSocket是什么&#xff1f; WebSocket 是一种网络通信协议&#xff0c;它提供了全双工通信机制&#xff0c;允许服务器主动向客户端发送消息&#xff0c;而不仅限于响应客户端的请求。它使用类似于 HTTP 的握手来建立连接&#xff0c;然后使用单独的持久连接来进行通信。这种…

C++ primer plus习题及解析第十二章(类和动态内存分配)

题目&#xff1a;12.1 题&#xff1a; 对于下面的类声明&#xff1a; class Cow { private:char name[20];char* hobby;double weight; public:Cow();Cow(const char* nm, const char* ho, double wt);//有参构造Cow(const Cow& c);//拷贝构造函数~Cow();//析构函数Cow&…

Linux系统调用read、write

0 前言 《Linux系统调用》整体介绍了系统调用&#xff0c;本文重点分析其中read、write的实现与使用方法。 1 定义 1.1 read SYSCALL_DEFINE3(read, unsigned int, fd, char __user *, buf, size_t, count) {struct file *file;ssize_t ret -EBADF;int fput_needed;file f…

【前端每日一题】 day3

JS的原型链如何实现继承&#xff0c;请写出一个例子 JavaScript中的原型链继承是通过原型&#xff08;prototype&#xff09;来实现的。每个对象都有一个原型&#xff08;prototype&#xff09;&#xff0c;该原型又是一个对象&#xff0c;而这个对象又有自己的原型&#xff0c…

kubernetes删除命名空间下所有资源

kubernetes强制删除命名空间下所有资源 在 Kubernetes 中&#xff0c;当一个命名空间处于 Terminating 状态但不会完成删除过程时&#xff0c;通常是因为内部资源没有被正确清理。要强制删除这个命名空间及其所有资源&#xff0c;你可以采取以下步骤&#xff1a; 1. 确认命名空…

cPanel中如何卸载已安装的SSL证书

我使用的Hostease的Linux虚拟主机产品默认带普通用户权限的cPanel面板&#xff0c;由于临时搭建了一个测试的个人的纯静态的网站&#xff0c;不想要安装SSL证书&#xff0c;但是据这边了解HosteaseLinux虚拟主机是只要域名解析指向主机IP&#xff0c;并且绑定到主机&#xff0c…