牛客网编程题 网易 安置路灯

https://www.nowcoder.com/practice/3a3577b9d3294fb7845b96a9cd2e099c?tpId=98&tqId=32826&tPage=1&rp=1&ru=%2Fta%2F2019test&qru=%2Fta%2F2019test%2Fquestion-ranking

题目大意:

给出一个字符串表示道路,其中字符’.'表示需要照亮的区域,字符’X’表示不需要照亮的区域,在一个格子上安置路灯,这个路灯可以照亮自己以及相邻的格子,求最少要多少盏路灯可以照亮全部区域。

思路:

记需要的路灯数为cnt,初始cnt=0,我们只需从头到尾遍历字符串,若遇见’.’,则cnt++,然后跳过三个格子,因为我们总是可以在’.'的下一个格子安放路灯,这个路灯可以照亮相邻的格子。

代码如下:

#include
#include
using namespace std;

int main(){
    int t;
    scanf("%d",&t);
    while(t--){
        int n;
        char ch[1005];
        scanf("%d%s",&n,&ch);
        int i=0,cnt=0;
        while(i<n){
            if(ch[i]=='.'){
                cnt++;
                i+=3;
            }else{
                i++;
            }
        }
        printf("%d\n",cnt);
    }
    return 0;
}

你可能感兴趣的:(面试题)