news 2026/10/15 18:03:30

华为OD机试真题双机位C卷 【完美走位】C语言实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
华为OD机试真题双机位C卷 【完美走位】C语言实现

完美走位

2026华为OD机试双机位C卷 - 华为OD上机考试双机位C卷 100分题型

华为OD机试双机位C卷真题目录点击查看: 华为OD机试双机位C卷真题题库目录|机考题库 + 算法考点详解

其它语言题解链接

华为OD机试真题 - 完美走位 (Python & C++ & JAVA & JS & GO)

题目描述

在第一人称射击游戏中,玩家通过键盘的A、S、D、W四个按键控制游戏人物分别向左、向后、向右、向前进行移动,从而完成走位。

假设玩家每按动一次键盘,游戏任务会向某个方向移动一步,如果玩家在操作一定次数的键盘并且各个方向的步数相同时,此时游戏任务必定会回到原点,则称此次走位为完美走位。

现给定玩家的走位(例如:ASDA),请通过更换其中一段连续走位的方式使得原走位能够变成一个完美走位。其中待更换的连续走位可以是相同长度的任何走位。

请返回待更换的连续走位的最小可能长度。

如果原走位本身是一个完美走位,则返回0。

输入描述

输入为由键盘字母表示的走位s,例如:ASDA

输出描述

输出为待更换的连续走位的最小可能长度。

用例1

输入

WASDAASD

输出

1

说明

将第二个A替换为W,即可得到完美走位

示例二

输入

AAAA

输出

3

说明

将其中三个连续的A替换为WSD,即可得到完美走位.

题解

思路

本题采用滑动窗口解决:

  1. 题目对于完美走位定义其实就是字符串中ASWD字母数量相同。

  2. 对于一个不完美走位的字符串通过修改一段连续的走位要想变成完美走位,那么这段连续走位必须满足包含所有多于平均数量的字符,并且每种多余平均数量的字符 在一段连续走位中数量大于等于多余部分数量。可能有点抽象,举个例子,例如现在A多两个,B多一个。找的区间必须满足这段区间至少包含两个A和一个B。

  3. 满足上述条件的最短区间就是这道题的结果。对于这类题可直接采用滑动窗口进行解决:

    • 计算AWSD每个字符在原字符串中的数量,以及超过的数量。如果都等于平均数量则已经是完美走位,输出0,否则进行下面逻辑。

    • 定义left = 0, right = 0, right开始不断右移,直到区间内满足上述2分析的要求时,这时候要寻求最短区间,尝试左边界右移,缩小边界,直到不满足3的要求时,继续尝试right右移。

    • 记录上述逻辑满足条件的最短窗口长度就是结果。

code

#include<stdio.h>#include<string.h>intmain(){// 长度可以根据输入长度变换chars[100010];scanf("%s",s);intn=strlen(s);// 不可能有解,冗余处理if(n%4){printf("-1\n");return0;}inttarget=n/4;// 记录每个字符的数量intcount_A=0,count_S=0,count_D=0,count_W=0;// 统计每个字符的数量for(inti=0;i<n;i++){switch(s[i]){case'A':count_A++;break;case'S':count_S++;break;case'D':count_D++;break;case'W':count_W++;break;}}// 计算多余数量intexcess_A=(count_A>target)?count_A-target:0;intexcess_S=(count_S>target)?count_S-target:0;intexcess_D=(count_D>target)?count_D-target:0;intexcess_W=(count_W>target)?count_W-target:0;// 已经是完美走位if(excess_A+excess_S+excess_D+excess_W==0){printf("0\n");return0;}// 滑动窗口intmin_len=n;intwindow_A=0,window_S=0,window_D=0,window_W=0;intleft=0;for(intright=0;right<n;right++){// 更新窗口计数switch(s[right]){case'A':window_A++;break;case'S':window_S++;break;case'D':window_D++;break;case'W':window_W++;break;}// 当窗口满足条件时收缩, 满足条件(窗口内所有字符大于等于 对应字符超过平均的数量)while(left<=right&&window_A>=excess_A&&window_S>=excess_S&&window_D>=excess_D&&window_W>=excess_W){intlen=right-left+1;if(len<min_len)min_len=len;// 左指针移动,更新窗口计数switch(s[left]){case'A':window_A--;break;case'S':window_S--;break;case'D':window_D--;break;case'W':window_W--;break;}left++;}}printf("%d\n",min_len);return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/13 23:18:14

救命神器!8款AI论文平台测评:本科生毕业论文救星

救命神器&#xff01;8款AI论文平台测评&#xff1a;本科生毕业论文救星 2026年AI论文平台测评&#xff1a;为何值得一看 随着人工智能技术的不断进步&#xff0c;AI论文平台逐渐成为本科生撰写毕业论文的重要辅助工具。然而&#xff0c;面对市场上琳琅满目的选择&#xff0c;如…

作者头像 李华
网站建设 2026/10/13 22:27:20

7 个 AI 论文辅助平台,自动调整格式并适配 LaTeX 模板

7 个 AI 生成论文网站推荐 论文格式规范 LaTeX 模板一键适配 工具快速对比排名&#xff08;前7推荐&#xff09; 工具名称 核心功能亮点 处理时间 适配平台 aibiye 学生/编辑双模式降AIGC 1分钟 知网、万方等 aicheck AI痕迹精准弱化查重一体 ~20分钟 知网、格子达…

作者头像 李华
网站建设 2026/10/12 4:05:19

8款AI工具大比拼,助你轻松应对论文查重的各种挑战

学术写作中的查重问题既是规范性的体现&#xff0c;也可能造成修改负担。目前智能辅助工具通过自然语言处理技术&#xff0c;可在保证学术严谨的同时提升文本原创性&#xff0c;为研究者提供高效的语义重构解决方案。 查重率工具对比速览 工具名称 处理速度 降重效果 专业术…

作者头像 李华
网站建设 2026/10/15 7:03:22

Occupancy十年演进(2015–2025)

Occupancy十年演进&#xff08;2015–2025&#xff09; 一句话总论&#xff1a; 2015年Occupancy还是“手工体素网格规则占用判断”的实验室概念&#xff0c;2025年已进化成“万亿级多模态VLA端到端4D Occupancy实时动态意图预测量子鲁棒自进化”的核心感知时代&#xff0c;中国…

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

论文降AI率避坑指南:这些方法千万别用!最近发现很多同学降AI率的方法都是错的,不仅没降下来,还把论文改得乱七八糟。今天来聊聊哪些方法该用,哪些坑要避开。## 一、常见误区:同义词无脑替换很多人以为把

最近帮学妹改论文&#xff0c;她的知网AI检测直接95.7%&#xff0c;差点没把她吓哭&#xff1a; 别慌&#xff0c;这种情况我见多了&#xff0c;今天就分享一下怎么把它降下来。 一、为什么AI率会这么高&#xff1f; AI检测的原理是识别"机器味"——句式太工整、逻…

作者头像 李华