腾讯前端编程第二题求指导

腾讯第二题一直是30%,是不是思想不对啊,我统计了一共有几“堆”0,每堆有几个,然后分别+1相乘,感觉就是组合的问题,但是只A了30%
#include<stdio.h>
int main() {
    int N;
    int chocos[100];
    int anoBox[100];
    int anoPos = 0;
    int countZero[50];
    int cZPos = 0;
    int result = 1;
    
    scanf("%d", &N);
    for(int i = 0; i < N; ++i) {
        scanf("%d", &chocos[i]);
    }
    for(int i = 0; i < 50; ++i) {
        countZero[i] = 0;
    }
    
    for(int i = 0; i < N; ++i) {
        if(chocos[i] == 0) {
            anoBox[anoPos] = 0;
            anoPos++;
            countZero[cZPos]++;
        } else {
            if(chocos[i - 1] == 1) {
                continue;
            } else {
                cZPos++;
                anoBox[anoPos] = 1;
                anoPos++;
            }
        }
    }
    for(int i = 0; i < 50; ++i) {
        if(countZero[i] != 0) {
            result *= (countZero[i] + 1);
        }
    }     for(int i = 0; i < 50 ; i++) {         printf("%d ", countZero[i]);     }
    printf("%d", result);
    return 0;
}

#腾讯##前端#
全部评论
var nn = parseInt(readline()); var q = readline().split(' '); var n=1; var x; var y; for(let i=0;i<nn;i++){     x = q.indexOf('1',i);     y = q.indexOf('1',x+1);     if(y==-1)         break;     n *= y-x;     i=x; } print(n);
点赞 回复 分享
发布于 2018-09-16 17:45
我的思路是 判断两个1之间有多少个零 然后相乘就行了
点赞 回复 分享
发布于 2018-09-16 17:42
var readline = require('readline'); const rl = readline.createInterface({     input: process.stdin,     output: process.stdout,     terminal:false }); let n = -1,arr = [],ans = 1; rl.on('line',function(line){     if(n < 0){         n = parseInt(line);     }else{         arr = line.split(' ').map((data)=>parseInt(data));     }     if(arr.length === n){         for(let i = 0; i < n; i++){             let k = i,count = 0;             //当遇到0的时候开始计数,并且找后面连续的元素是不是0,记录当前0的个数count和i值             while(!arr[i]&&i < n){                 i++;                 count++;             }             //只要不是数组最前面和最后面的0,那么每次连续出现count次0的话,方法数就是count+1,然后所有方法数相乘             if(k !== 0 && i < n && count){                 ans = ans*(count+1);             }             //为了能够使i指向不为0的下一位,所以加上下一句,其实不需要,因为下一位不为0,就不会执行上面代码然后会继续循环             // if(count)i--;         }         console.log(ans);         rl.close();     } })
点赞 回复 分享
发布于 2018-09-16 17:19
看看这个https://www.nowcoder.com/discuss/110833
点赞 回复 分享
发布于 2018-09-16 17:13
额、我的代码发出来乱码了
点赞 回复 分享
发布于 2018-09-16 17:10
有没有考虑首尾是0的情况啊?
点赞 回复 分享
发布于 2018-09-16 16:51
帮顶,腾讯的测试用例太刁钻咯~~
点赞 回复 分享
发布于 2018-09-16 16:48

相关推荐

05-12 17:28
已编辑
门头沟学院 硬件开发
ldf李鑫:不说公司名祝你以后天天遇到这样的公司
点赞 评论 收藏
分享
评论
点赞
4
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务