最近我问了一个问题,但是关于递归导致了这个问题
注意-> count()函数返回键K在地图容器中的出现次数。如果密钥存在于容器中,则返回1,因为映射仅包含唯一密钥。如果键在地图容器中不存在,则返回0。
它几乎通过了所有测试用例,但未通过1 000 000 000
根据long long int range值,它也应该通过这个
一些负值作为输出;
我认为这是容器映射的问题
谁能帮我解决地图的问题?
#include<bits/stdc++.h>
using namespace std;
map <long long int,long long int> dp;
int exchange(long long int n){
if(n<12)
return n;
if(dp.count(n))
return dp[n];
return dp[n] = exchange(n/2)+exchange(n/3)+exchange(n/4);
}
int main(){
// int t;
// cin>>t;
while(1){
// memset(dp,-1,sizeof(dp));
long long int n;
cin>>n;
cout<<exchange(n)<<endl;
}
}
答案 0 :(得分:6)
问题出在函数exchange
上-返回int
,它是比long long int
窄的类型。
答案 1 :(得分:4)
首先,这很糟糕:journalctrl
如果您需要地图,请使用:
#include<bits/stdc++.h>
然后关于类型,如果您需要存储超过20亿的东西,请使用一种可以确保可以容纳的类型(尤其是返回类型!):
#include <map>