news 2026/4/23 11:32:05

华为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/4/16 14:15:42

2026,羽绒服不再“围攻波司登”

文 | 螳螂观察作者 | 风一羽绒服里的故事&#xff0c;不再只是波司登了。2025年&#xff0c;整个行业发生了巨大的变化&#xff0c;当冬日寒风掠过街头&#xff0c;羽绒服早已从单纯的保暖单品&#xff0c;蜕变为消费市场的“常青主角”。从曾经千元价位主导的格局&#xff0c;…

作者头像 李华
网站建设 2026/4/22 23:38:57

从SOA到微服务:HR智能助手架构演进

从SOA到微服务:HR智能助手架构演进——一场由业务需求驱动的“拆墙运动” 一、引入与连接:招聘季的HR崩溃现场与架构的使命 1. 一个真实的痛点场景 凌晨1点,某互联网公司HR专员小夏还在电脑前揉着太阳穴——这个招聘季,他们要招100名工程师,收到了2万份简历。她盯着屏幕…

作者头像 李华
网站建设 2026/4/23 10:44:32

强烈安利9个AI论文软件,MBA轻松搞定毕业论文!

强烈安利9个AI论文软件&#xff0c;MBA轻松搞定毕业论文&#xff01; AI 工具如何成为 MBA 学生的论文利器 在当前学术研究日益数字化的趋势下&#xff0c;AI 工具正逐渐成为众多 MBA 学生完成毕业论文的重要助手。尤其是在论文写作过程中&#xff0c;AI 能够帮助学生高效处理内…

作者头像 李华
网站建设 2026/4/2 7:54:50

论文被打回说AI率太高,三天内怎么改好?

昨天有同学急哭了&#xff1a;论文被打回&#xff0c;说AI率太高&#xff0c;只给三天时间改。 这种情况我帮过很多人&#xff0c;今天分享一下快速改好的方法。 一、先别慌&#xff0c;分析问题 首先查一下具体是哪些段落AI率高。检测报告一般会标出来。 重点改标红的部分就…

作者头像 李华
网站建设 2026/4/16 20:51:04

高效完成论文查重任务,8款AI工具提供精准改写方案

学术写作中&#xff0c;查重率是衡量研究规范性的重要指标&#xff0c;但过高的重复率常给作者带来修改负担。为平衡学术严谨性与文本原创性&#xff0c;现代自然语言处理技术驱动的智能工具应运而生&#xff0c;它们能在保留核心语义的前提下对文本进行深度重构&#xff0c;显…

作者头像 李华
网站建设 2026/4/16 13:36:20

VLA十年演进(2015–2025)

VLA十年演进&#xff08;2015–2025&#xff09; 一句话总论&#xff1a; 2015年VLA&#xff08;Vision-Language-Action&#xff09;还“不存在”&#xff08;仅单模态孤岛&#xff09;&#xff0c;2025年已进化成“万亿级多模态VLA端到端统一感知-语言-动作实时意图级自进化量…

作者头像 李华