小Q正在给一条长度为n的道路设计路灯安置方案。
为了让问题更简单,小Q把道路视为n个方格,需要照亮的地方用'.'表示, 不需要照亮的障碍物格子用'X'表示。
小Q现在要在道路上设置一些路灯, 对于安置在pos位置的路灯, 这盏路灯可以照亮pos - 1, pos, pos + 1这三个位置。
小Q希望能安置尽量少的路灯照亮所有'.'区域, 希望你能帮他计算一下最少需要多少盏路灯。
小Q正在给一条长度为n的道路设计路灯安置方案。
为了让问题更简单,小Q把道路视为n个方格,需要照亮的地方用'.'表示, 不需要照亮的障碍物格子用'X'表示。
小Q现在要在道路上设置一些路灯, 对于安置在pos位置的路灯, 这盏路灯可以照亮pos - 1, pos, pos + 1这三个位置。
小Q希望能安置尽量少的路灯照亮所有'.'区域, 希望你能帮他计算一下最少需要多少盏路灯。
输入的第一行包含一个正整数t(1 <= t <= 1000), 表示测试用例数
接下来每两行一个测试数据, 第一行一个正整数n(1 <= n <= 1000),表示道路的长度。
第二行一个字符串s表示道路的构造,只包含'.'和'X'。
对于每个测试用例, 输出一个正整数表示最少需要多少盏路灯。
2 3 .X. 11 ...XX....XX
1 3
test_num = int(input()) while test_num > 0: n = int(input()) s = list(input()) cnt = 0 i = 0 # 大小为3的滑动窗口滑动 while i < n: if s[i] == 'X': # 第一个为X,直接滑动1滑过该位置 i += 1 else: if i+2>=n: # 窗口不足3了 break # 否者为 ...或..X或.X.或.XX,这时需要一个路灯放在中间即可照亮该窗口 cnt += 1 i += 3 # 滑动3个位置 if i == n: # 刚好滑完 print(cnt) else: # 可能是..或.X或. 还需要一个路灯 print(cnt+1) test_num -= 1
''' 动态规划 当前为i,则为前面第三个的值加1 当前为X,则和前面一个值一样 s[i]=="." dp_lst[i]=1 if i<=2 else dp_lst[i-3]+1 s[i]=="X" dp_lst[i]=0 if i==1 else dp_lst[i-1] ''' import sys t=int(sys.stdin.readline().strip()) for _ in range(t): n=int(sys.stdin.readline().strip()) s=sys.stdin.readline().strip() dp_lst=[0 for i in range(n)] for i in range(n): if s[i]==".": if i<=2: dp_lst[i]=1 else: dp_lst[i]=dp_lst[i-3]+1 else: if i==0: dp_lst[i]=0 else: dp_lst[i]=dp_lst[i-1] print(dp_lst[n-1])
t = int(input()) for i in range(t): n = int(input()) s = input() ans = 0 j = 0 while j < n: if s[j] == '.': ans += 1 j += 3 else: j += 1 print(ans)