这是我的代码:
#include <bits/stdc++.h>
using namespace std;
string dp[11451];
string eval(int x) {
if(dp[x]!="") return dp[x];
else {
int a=0, i=0, x1=x;
string ret="";
stack<string> ss;
while(x) {
a=x%2;
x/=2;
if(a) {
if(i==1) ss.push("2+");
else ss.push("2("+eval(i)+")+");
}
i++;
}
while(!ss.empty()) {
ret+=ss.top(); ss.pop();
}
ret=ret.substr(0, ret.length()-1);
dp[x1]=ret;
return ret;
}
}
int main() {
dp[0]="0";
dp[1]="2(0)";
dp[2]="2";
int n;
cin>>n;
string s=eval(n);
cout<<s;
return 0;
}
同样的代码
第一次提交 AC?
第二次提交 怎么RE了?
难道是卡到了评测机的 bug ?
把 string dp[11451]; 改成 string dp[114514]; 就一定AC了。
为什么呢?