http://oj.acm.zstu.edu.cn/JudgeOnline/problem.php?id=2547
AC的递归
#include<stdio.h>
#include<string.h>
int main(){
int n,f[1010];
while(scanf("%d",&n)!=EOF){
memset(f,0,sizeof(f));
for(int i=1;i<=n;i++){
for(int j=1;j<=i/2;j++){
f[i]+=f[j];
}
f[i]+=1;
}
printf("%d\n",f[n]);
}
return 0;
}
肯定超时的dfs
#include<stdio.h>
#include<string.h>
int cnt;
void dfs(int x){
cnt++;
if(x==1) return;
int xx=x/2;
for(int i=xx;i>=1;i--){
dfs(i);
}
}
int main(){
int n;
while(scanf("%d",&n)!=EOF){
cnt=0;
dfs(n);
printf("%d\n",cnt);
}
return 0;
}