本文主要是介绍网易笔试安置路灯,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
算法思路:贪心算法
遍历路灯字符串,遇见“.”,就给计数器+1,然后往后挪三个位置。如果遇到“X”,就直接往后挪一个位置。
编程思路
路灯个数放入数组n中,路灯对应的字符串放入数组lantern中,要放路灯的个数放入lantern_count中。这三个数组是一一对应的。双重循环来遍历lantern中的字符串,如果遇到“.”,对应的lantern_count+=1,j+=3(挪三个位置)。如果遇到“X”,j+=1(挪一个位置)。
if __name__ == '__main__':count = int(input()) # 测试用例的个数n = []lantern = []for i in range(count):n_tmp = int(input()) # 路灯个数n.append(n_tmp)lantern_tmp = input() # 路灯分布字符串lantern.append(lantern_tmp)lantern_count = [0 for i in range(count)] # 存储最终结果的数组for i in range(len(lantern)): # 循环路灯数j = 0while (j < len(lantern[i])): # 循环对应路灯排列字符串if lantern[i][j] == '.':j += 3lantern_count[i] += 1else:j += 1print(lantern_count[0])for i in range(len(lantern_count) - 1):print(lantern_count[i + 1])
链接:https://www.nowcoder.com/questionTerminal/3a3577b9d3294fb7845b96a9cd2e099c?orderByHotValue=1&mutiTagIds=149&page=1&onlyReference=false
来源:牛客网#include<stdio.h>
#define maxlen 1007
char road[maxlen];
int main() {int t, i;scanf("%d", &t);for (i = 0; i < t; ++i) {int len, count = 0;scanf("%d", &len);scanf("%s", road);char *p;for (p = road; p < road + len; ++p) {if (*p == '.') {p[1] = p[2] = 'X';count++;}}printf("%d\n", count);}return 0;
这篇关于网易笔试安置路灯的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!