最近我问了一个问题,但是关于递归导致了这个问题
注意-> 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;
}
}
最佳答案
首先,这很糟糕:#include<bits/stdc++.h>
如果需要地图,请使用:
#include <map>
然后关于类型,如果您需要存储超过20亿的东西,请使用可以确保可以容纳的类型(尤其是返回类型!):
#include <iostream>
#include <map>
int64_t exchange(std::map& <int64_t, int64_t>, int64_t 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(){
std::map <int64_t, int64_t> dp;
while(1){
int64_t n;
std::cin>>n;
std::cout<<exchange(dp, n)<<std::endl;
}
}
关于c++ - map(long long int,long long int)不适用于key = 1000000000(在long long int范围内),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54088801/