news 2026/7/9 3:48:50

UVA1588 换抵挡装置 Kickdown

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
UVA1588 换抵挡装置 Kickdown

UVA1588 换抵挡装置 Kickdown

题目大意

一家全球顶尖汽车企业的研究实验室接到订单,需要研发一款特殊变速机构,该机构能实现极高效的降挡操作(切换至低速挡位)。经过数月研究,工程师发现最优方案需要使用齿和凹槽分布不均匀的特殊齿轮,并且已经算出齿轮齿面的最优形态。现在他们需要开展实验来验证该结论。

实验第一阶段采用平面齿状条块替代圆形齿轮。一段条块由 n 个单元组成,每个单元要么是高度 h 的凹槽(用字符 1 表示),要么是高度 2h 的齿(用字符 2 表示)。实验需要两段条块:一段模拟主动齿轮(齿在下方),一段模拟从动齿轮(齿在上方)。
实验室有一条宽度固定为 3h 的长条合金材料,长度足够长,可以将两段条块错位拼接咬合放置在这条材料上。两段条块形状不规则,但可以沿着水平方向互相偏移错开摆放。
这种合金材料造价昂贵,工程师希望尽可能减少材料使用量。你的任务是求出能同时放下两段条块所需的长条材料的最小总长度。
两段条块咬合摆放的约束规则:任意同一个水平位置上,主动齿轮单元与从动齿轮单元不能同时都是齿(数值 2)。因为主动齿高度 2h 在下、从动齿高度 2h 在上,两者叠加总高度会达到 4h,超过材料固定宽度 3h,发生冲突;一个是齿一个是凹槽(2 和 1)、两个都是凹槽(1 和 1)都不会冲突,可以正常摆放。两段条块不能翻转、不能旋转,只能左右平移错开。

输入

输入包含多组测试用例,每组用例两行输入:
第一行字符串代表主动齿轮条块,第二行字符串代表从动齿轮条块。
字符串中每个字符代表一个单元,1是凹槽,2是齿;字符串不可翻转、旋转;每个字符串非空,长度不超过 100。

输出

针对每组测试用例,输出一行一个整数,代表摆放两段条块所需长条材料的最小长度。

解题思路

先把两段齿轮字符串读入,初始最短长度设为两段完全分开拼接的总长,先让下层齿轮向右逐步偏移,偏移格数从 0 开始递增,每偏移一格就核对重叠位置高度之和是否超过 3,首个无冲突的偏移算出对应摆放长度并更新最短值,直接停止该轮偏移遍历;再换上层齿轮向右逐步偏移,同样从 0 格开始依次校验重叠高度,找到首个合规偏移更新最短长度,全部偏移情况比对完成后输出最终最小摆放总长。

完整代码

importjava.util.Scanner;publicclassKickdown{publicstaticbooleancheckDownShift(Stringup,Stringdown,intk){intlenA=up.length();intlenB=down.length();for(intj=0;j<lenB;j++){intpos=k+j;if(pos>=lenA){break;}intha=up.charAt(pos)-'0';inthb=down.charAt(j)-'0';if(ha+hb>3){returnfalse;}}returntrue;}publicstaticbooleancheckUpShift(Stringup,Stringdown,intk){intlenA=up.length();intlenB=down.length();for(intj=0;j<lenA;j++){intpos=k+j;if(pos>=lenB){break;}intha=up.charAt(j)-'0';inthb=down.charAt(pos)-'0';if(ha+hb>3){returnfalse;}}returntrue;}publicstaticintminLength(Stringa,Stringb){intlenA=a.length();intlenB=b.length();intminTotal=lenA+lenB;for(intk=0;k<a.length();k++){booleanflag=checkDownShift(a,b,k);if(flag){intcurrentLon=Math.max(lenA,lenB+k);if(currentLon<minTotal){minTotal=currentLon;}break;}}for(intk=0;k<b.length();k++){booleanflag=checkUpShift(a,b,k);if(flag){intcurrentLon=Math.max(lenB,lenA+k);if(currentLon<minTotal){minTotal=currentLon;}break;}}returnminTotal;}publicstaticvoidmain(Stringargs[]){Scannersc=newScanner(System.in);while(sc.hasNextLine()){Stringup=sc.nextLine().trim();Stringdown=sc.nextLine().trim();System.out.println(minLength(up,down));}sc.close();}}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/9 3:46:19

东莞视维(SIVIBRAND):从制造业土壤生长出的品牌全案机构

在粤港澳大湾区的制造腹地东莞&#xff0c;品牌策划设计行业长期围绕着"工厂怎么做品牌"这个命题展开。广东视维品牌营销咨询有限公司&#xff08;SIVIBRAND&#xff09;便是其中一家深耕多年的品牌整合策略与设计机构——扎根东莞&#xff0c;服务全国&#xff0c;业…

作者头像 李华
网站建设 2026/7/9 3:44:51

循序精进|华望MBSE高级培训班航天九院专场顺利开班

7月8日&#xff0c;由杭州华望系统科技有限公司举办的“基于模型的系统工程&#xff08;MBSE&#xff09;理论、实践与软件”高级培训班航天九院专场&#xff0c;在杭州华望北京分公司天问会议室正式开班。 来自航天九院的15位工程师与技术管理者齐聚一堂&#xff0c;开启为期三…

作者头像 李华
网站建设 2026/7/9 3:44:10

华为防火墙开局配置

1 防火墙开局配置 做项目一定要学会开局配置&#xff0c;有了良好的开局才能完成后期的项目部署 和我的虚拟网卡可以通信 输入地址 192.168.100.254 用户名admin admin123 这样图形界面就出来

作者头像 李华
网站建设 2026/7/9 3:36:02

西藏拉萨旅行,高反制氧机怎么选?从需求到型号一篇讲清楚

拉萨&#xff0c;海拔3650米&#xff0c;是绝大多数人进藏的第一站&#xff0c;也是身体与高原的第一次正面交锋。飞机落地贡嘎机场那一刻&#xff0c;血氧饱和度可能已经悄然掉到90%以下。头痛、气短、失眠、心跳加速——高原反应不会因为布达拉宫的壮美而网开一面。对于拉萨旅…

作者头像 李华