我的解决方案是超时。有人可以指出原因。先谢谢了 。问题的网址是https://www.codechef.com/problems/COINS
#include<iostream>
using namespace std;
static long long int s=0;
int coin(long long int n)
{
if(n<=11)
{
s=s+n;
return n;
}
coin(n/2)
coin(n/3)
coin(n/4);
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
long long int x,y;
while(cin>>x)
{
coin(x);
printf("%lld\n",s);
s=0;
}
}
答案 0 :(得分:0)
使用上述解决方案中的方法,您将一遍又一遍地重新计算相同的数字。您在注释中提到的<form id="myform">
<input name="user" type="text" value="myvalue">
</form>
是一种称为memoization的技术,在此技术中,您要缓存结果,因此对于每个数字,在递归调用map
之前,首先要检查是否它已经在您的备注表中,如果是,您可以立即返回结果,而无需一遍又一遍地重新计算。
祝你好运!