📅  最后修改于: 2023-12-03 15:12:44.547000             🧑  作者: Mango
这是一道来自印度的计算机科学硕士入学考试(GATE)的题目,难度适中,主要考察编程基础。
有一个门,上面有 $n$ 个开关,每个开关有两种状态:打开或关闭。门可以被打开或关闭,当且仅当有一些开关的状态被改变了。每次需要改变的开关状态是指从当前状态(打开或关闭)到目标状态(也是打开或关闭)改变需要的最少步骤数。给定门的初始状态和目标状态,请编写一个程序,计算打开或关闭门所需的最小转换次数。
输入的第一行包含一个整数 $T$,表示数据组数。接下来的 $3T$ 行,每组数据包含 3 行:
第一行是一个整数 $n$,表示开关的数量。
第二行是一个由 0 或 1 组成的长度为 $n$ 的字符串,表示门的初始状态。
第三行是一个由 0 或 1 组成的长度为 $n$ 的字符串,表示门的目标状态。
输出包含 $T$ 行,每行一个整数,表示打开或关闭门所需的最小转换次数。
2
5
11110
11011
6
101010
010101
1
5
这是一道非常简单的题目,只需要从左往右逐位比较当前状态和目标状态,如果不同就计数器加 1,最后输出计数器的值就是所求。代码中我们可以用一个变量 $count$ 来计数。
for i in range(int(input())):
n = int(input())
s1 = input()
s2 = input()
count = 0
for j in range(n):
if s1[j] != s2[j]:
count += 1
print(count)
这段代码使用了一个 for 循环来遍历所有开关的状态,然后用一个 if 语句判断当前状态和目标状态是否相等,如果不相等就让计数器加 1。最后输出计数器的值就是所求。