题解 3143: 蓝桥杯2023年第十四届省赛真题-更小的数

来看看其他人写的题解吧!要先自己动手做才会有提高哦! 
返回题目 | 我来写题解

筛选

更小的数()

解题思路:枚举起点终点,如果起点大于终点,交换次数加一,如果起点小于终点,无法交换,如果起点等于终点,起点后移终点前移再次比较,直到第一个不等的点出现或起点大于终点跳出```cpp#includeusingnamespacestd;stringa;intans;intmain(){cin>>a;for

遍历所有区间可能,找到第一个不同

摘要:解题思路:遍历所有区间可能,如果起点和终点相同,那么就各自向中间移动一位,直到第一位不同。然后比较这一位,前大后小则ans++注意事项:参考代码:#include <bits/stdc++.h> #……

C语言解法,参考C++

摘要:解题思路:注意事项:参考代码:#include<stdio.h>#include<string.h>int main(){ char num[5000]; int i,j,a=0; scanf("%s……

判断首尾,如果相等就不断递归,直至结束或者判断出来首尾大小

解题思路:因为题目中是连续子序列,所以两个循环确定头尾,如果头大于尾,则肯定交换后小于之前数。如:54321交换后为12345。但是我们会碰到头尾相等的。如14321,那就比较第二个和倒数第二个这里就是比较4,2。但是如果还是相等,那就通过递归,直到两个数不相等,或者一直相等。

确定区间,找第一个左大右小,让count++

解题思路:定义两个指针l,r分别表示区间的两端定义hasSmaller方法如果l,r指向的字符满足左大右小,返回1表示找到这样一个符合条件的区间如果l,r指向的字符恰好相等,则将l++,r--缩小区间再判断如果l,r指向的字符左小右大,直接返回0,