Codechefでhereという問題が発生しました。私はメモを作成するためにベクトルを使用しようとしています。私はまだプログラミングでは新しく、STLコンテナにはあまり慣れていないので、ルックアップテーブルにvector
を使用しました。 (しかし、私はmap
を使って問題を解決することを提案しました)。C++ベクタとメモ化ランタイムエラーの問題
私の質問は、以下に示すソリューションが実行時エラーになる方法です。エラーを得るために、問題の境界値(100000000
)を入力として使用しました。 Netbeans IDEで表示されるエラーメッセージはRUN FAILED (exit value 1, total time: 4s)
で、入力は1000000000
です。ここでは、コードは次のようになります。
#include <iostream>
#include <cstdlib>
#include <vector>
#include <string>
#define LCM 12
#define MAXSIZE 100000000
using namespace std;
/*
*
*/
vector<unsigned long> lookup(MAXSIZE,0);
int solve(int n)
{
if (n < 12) {
return n;
}
else {
if (n < MAXSIZE) {
if (lookup[n] != 0) {
return lookup[n];
}
}
int temp = solve(n/2)+solve(n/3)+solve(n/4);
if (temp >= lookup[n]) {
lookup[n] = temp;
}
return lookup[n];
}
}
int main(int argc, char** argv) {
int t;
cin>>t;
int n;
n = solve(t);
if (t >= n) {
cout<<t<<endl;
}
else {
cout<<n<<endl;
}
return 0;
}
あなたは多くのことを繰り返し、スタックのオーバーフローが発生する可能性があります。何が起こるかは、デバッガを使って確認してください。 –