连续数字的最佳产品

时间:2017-10-26 12:53:04

标签: c arrays find

我需要找到C中150位数字中10位连续数字的最大乘积,但我看不出什么错误。

我使用nr[]存储10个连续数字,n存储最大的10个数字。

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int array[150]={7,3,1,6,7,1,7,6,5,3,1,3,3,0,6,2,4,9,1,9,2,2,5,1,1,9,6,7,4,4,2,6,5,7,4,7,4,2,3,5,5,3,4,9,1,9,4,9,3,4,9,6,9,8,3,5,2,0,3,1,2,7,7,4,5,0,6,3,2,6,2,3,9,5,7,8,3,1,8,0,1,6,9,8,4,8,0,1,8,6,9,4,7,8,8,5,1,8,4,3,8,5,8,6,1,5,6,0,7,8,9,1,1,2,9,4,9,4,9,5,4,5,9,5,0,1,7,3,7,9,5,8,3,3,1,9,5,2,8,5,3,2,0,8,8,0,5,5,1,1};
    int i,l,j,nr[10];
    long int n=1,k;
    for(i=0;i<140;i++){
        k=1;
        for(j=i;j<i+10;j++){
            k=k*array[j];
        }
        if(n<k){
            for(l=0;l<10;l++){
                nr[l]=array[i+l];
            }
            n=k;
        }
        for(i=0;i<=9;i++){
            printf("%d ",nr[i]); 
        }
        return 0;
    }
}

2 个答案:

答案 0 :(得分:1)

尝试for(i=1;i<=150;i++); 因为你需要150位数字

答案 1 :(得分:0)

您遇到的最大问题是外部return循环中有for。这意味着在您查看第一批10个数字后,您将从循环中退出。

您还遇到一个问题,即您在外部循环中打印了nr数组,因此会打印很多内容。你可能想在外面,就在你回来之前。

修复那些提供了一个字符串:

9 4 9 4 9 5 4 5 9 5

我没有检查过,但是那里有很多9,并且没有任何小于4,所以可以很容易地想象它是曾经成倍增加的最大字符串。