小葱有一面由 块砖排成一行形成的墙,砖块有黑白两种颜色。 小葱心目中的墙是黑白两种砖块交替构成的,于是她要把现在的墙进行改造。 每一次修改可以把任意一块砖块的颜色反转(即白变黑或黑变白),请你帮小葱算算至少需要多少次修改才能把现在的墙修改为小葱心目中的墙。c++怎么实现
时间: 2023-05-27 08:07:34 浏览: 44
假设现在墙上黑白砖块的交替顺序是“BW”,即第一块砖是黑色,第二块是白色,第三块是黑色,以此类推。小葱想要将它改为“BW”交替的顺序。
我们可以分别计算出将现在的墙改为“BWBWBW…”和“WBWBWB…”两种交替顺序所需的修改次数,然后取其中的较小值。
以将墙改为“BWBWBW…”为例,我们可以将其视为一个重复模式“BW”,因此只需要统计现在墙上每个“BW”模式中黑色砖块和白色砖块的数量,然后取它们的最小值即可。
以将墙改为“WBWBWB…”为例,同样可以将其视为一个重复模式“WB”,进行统计。最后将两种情况的修改次数取较小值即为最终答案。
具体实现可以用一个循环遍历墙上的每一块砖块,判断它和它前面的砖块是否组成了一个“BW”或“WB”模式,然后对应地更新计数器。
相关问题
小葱有一面由n块砖排成一行形成的墙,砖块有黑白两种颜色。 小葱心目中的墙是黑白两种砖块交替构成的,于是她要把现在的墙进行改造。 每一次修改可以把任意一块砖块的颜色反转(即白变黑或黑变白),请你帮小葱算算至少需要多少次修改才能把现在的墙修改为小葱心目中的墙。
思路:分别计算把当前墙变成以黑色为开头和以白色为开头需要的修改次数,取两者的最小值即可。
具体实现:
1. 以黑色为开头的修改次数:分别计算奇数位置和偶数位置上的不同颜色砖块数量,取两者之和即为需要修改的次数。
2. 以白色为开头的修改次数:同上,只是计算顺序相反。
3. 取两者的最小值。
代码如下:
def min_step(n, bricks):
odd_black = 0 # 奇数位置上黑色砖块数量
even_black = 0 # 偶数位置上黑色砖块数量
odd_white = 0 # 奇数位置上白色砖块数量
even_white = 0 # 偶数位置上白色砖块数量
for i in range(n):
if i % 2 == 0: # 偶数位置
if bricks[i] == 'B':
even_black += 1
else:
even_white += 1
else: # 奇数位置
if bricks[i] == 'B':
odd_black += 1
else:
odd_white += 1
# 以黑色为开头的修改次数
step1 = odd_white + even_black
# 以白色为开头的修改次数
step2 = odd_black + even_white
return min(step1, step2)
n = int(input())
bricks = input().strip()
print(min_step(n, bricks))
小葱要在一个数组中查找一个值,小葱对这个值的有一个预期的位置,所以如果有多个值满足要求,我们需要取距离预期位置最近的值。 如果存在两个位置距离相同,我们取下标更大的位置。
以下是小葱的代码实现:
```python
def search_value(arr, target, expected_index):
# 初始化最小距离和最小距离的下标
min_distance = float('inf')
min_index = -1
for i in range(len(arr)):
# 如果当前值等于目标值
if arr[i] == target:
# 计算距离预期位置的距离
distance = abs(i - expected_index)
# 如果距离更小或者距离相同但下标更大,则更新最小距离和最小下标
if distance < min_distance or (distance == min_distance and i > min_index):
min_distance = distance
min_index = i
# 如果找到了符合条件的值,则返回该值,否则返回None
if min_index != -1:
return arr[min_index]
else:
return None
```
使用示例:
```python
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
target = 3
expected_index = 2
result = search_value(arr, target, expected_index)
print(result) # 输出3
```
在上面的例子中,目标值为3,预期位置为2,数组中有多个值等于3,但距离预期位置最近的是下标为2的位置,因此返回值为3。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)