Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C SPOJ和x2014上的硬币;每次获取运行时错误(SIGSGEV)_C - Fatal编程技术网

C SPOJ和x2014上的硬币;每次获取运行时错误(SIGSGEV)

C SPOJ和x2014上的硬币;每次获取运行时错误(SIGSGEV),c,C,/***********************************************************************************************************************************SPOJ上的硬币问题。“”。每次我遇到运行时错误(SIGSGEV)。请帮忙解决问题。它在我的机器上运行良好,我没有发现任何问题。它还提供了正确的输出。但在斯波吉,这并没有被接受。 ****************************

/***********************************************************************************************************************************SPOJ上的硬币问题。“”。每次我遇到运行时错误(SIGSGEV)。请帮忙解决问题。它在我的机器上运行良好,我没有发现任何问题。它还提供了正确的输出。但在斯波吉,这并没有被接受。 ***********************************************************************************************************************************/

#include<stdio.h>

long long  arr[1000000]; /* Is this large number ok?*/

long long coins(long long n)/*Used recursion*/
{
    if(n==0)
        return 0;

    if(arr[n]!=0)
        return arr[n];

    long long a,b,c,sum;
    a=n/2;
    b=n/3;
    c=n/4;
    sum=coins(a)+coins(b)+coins(c);
    if(sum>n)
    {
        arr[n]=sum; /*Dynamic programming*/
        return sum;
    }
    else
    {
        arr[n]=n;   /*Dynamic programming*/
        return n;
    }
}

int main()
{
    long long n;
    while(scanf("%lld",&n))//Have doubt in this. Should it be while(scanf(...)!=EOF)
    {
    long long dollar=coins(n);
    printf("%lld\n",dollar);
    }
    return 0;
}
#包括
长-长arr[1000000];/*这个大数字行吗*/
long long硬币(long long n)/*使用递归*/
{
如果(n==0)
返回0;
如果(arr[n]!=0)
返回arr[n];
长a,b,c,和;
a=n/2;
b=n/3;
c=n/4;
总和=硬币(a)+硬币(b)+硬币(c);
如果(总和>n)
{
arr[n]=sum;/*动态规划*/
回报金额;
}
其他的
{
arr[n]=n;/*动态规划*/
返回n;
}
}
int main()
{
长n;
while(scanf(“%lld”,&n))//对此有疑问。应该是while(scanf(…)!=EOF)
{
长美元=硬币(n);
printf(“%lld\n”,美元);
}
返回0;
}

问题显示n 100000000,那么有多少子问题

应该有一个问题链接,对吗?您的问题在于数组arr[]:)欢迎使用堆栈溢出。请尽快阅读这一页。如果你想得到问题的帮助,你需要确定程序应该做什么,包括样本输入、预期和实际输出。请记住,SPOJ项目通常会提供有关输入大小的信息。不清楚为什么需要一百万长的整数,但我还没有找到这个问题——你应该给我们提供一个到这个问题的链接。您的问题很可能是该阵列的大小;这真是太大了。也许如果你告诉人们“SPOJ上的硬币问题”是什么意思,他们可以帮你。它会因为每次输入而崩溃吗?还是只买大的?谢谢。很抱歉,我没有得到暗示。