递归层数太多
by CBW2007 @ 2020-02-24 10:41:23
(理论上也不多啊)
by CBW2007 @ 2020-02-24 10:41:57
手动打表
```
string a[15]={"2(0)","2","2(2)","2(2+2(0))","2(2(2))","2(2(2)+2(0))","2(2(2)+2)","2(2(2)+2+2(0))","2(2(2+2(0)))","2(2(2+2(0))+2(0))","2(2(2+2(0))+2)","2(2(2+2(0))+2+2(0))","2(2(2+2(0))+2(2))","2(2(2+2(0))+2(2)+2(0))","2(2(2+2(0))+2(2)+2)"};
```
by lndjy @ 2020-02-24 10:47:20
@[CBW2007](/user/60178) 但是为什么自己运行是可以得出答案的
by yinhan @ 2020-02-24 10:51:55
```
#include<stdio.h>
#include<string.h>
int a[32][35];
void print(int x,int round)
{
int k=x,key=0,count=0;
if(x==0 || x==2)
{
printf("2(%d)",x);
return ;
}
if(x==1)
{
printf("2");
return ;
}
if(x>2)
{
memset(a[round],0,sizeof(a[round]));
key=0;
while(k!=0)
{
a[round][key++]=k%2;
k/=2;
if(a[round][key-1]==1)
{
count++;
}
}
for(int i=key-1;i>=0;i--)
{
if(a[round][i]==1)
{
if(i>2)
{
printf("2(");
print(i,round+1);
printf(")");
}
else
{
print(i,round+1);
}
if(count>1)
{
printf("+");
count--;
}
}
}
}
}
int main()
{
int n;
scanf("%d",&n);
print(n,1);
return 0;
}
```
by yinhan @ 2020-02-24 10:52:36
@[yinhan](/user/248005) 之前的代码发错了
by yinhan @ 2020-02-24 10:52:55
@[CBW2007](/user/60178) 对不起,我提交的时候把错误代码提交了,正确的没有错。。。
by yinhan @ 2020-02-24 10:54:40
@[yinhan](/user/248005) MLE是内存超了,和答案没有关系
by 百因必有AC @ 2020-08-18 17:45:39