C SPOJ和x2014上的硬币;每次获取运行时错误(SIGSGEV)
/***********************************************************************************************************************************SPOJ上的硬币问题。“”。每次我遇到运行时错误(SIGSGEV)。请帮忙解决问题。它在我的机器上运行良好,我没有发现任何问题。它还提供了正确的输出。但在斯波吉,这并没有被接受。 ***********************************************************************************************************************************/C SPOJ和x2014上的硬币;每次获取运行时错误(SIGSGEV),c,C,/***********************************************************************************************************************************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上的硬币问题”是什么意思,他们可以帮你。它会因为每次输入而崩溃吗?还是只买大的?谢谢。很抱歉,我没有得到暗示。