RT,题面:
题目描述 Description
在所有n的拆分方案中,满足所有加数都是平方数的方案有多少?
输入描述 Input Description
一个正整数n。
输出描述 Output Description
满足条件的方案数。
样例输入 Sample Input
【输入样例】
5
样例输出 Sample Output
【输出样例】
2
【数据范围】
20%的数据,1≤n≤10;
50%的数据,1≤n≤50;
80%的数据,1≤n≤800;
100%的数据,1≤n≤2000。
我的代码:
#include<iostream>
using namespace std;
int cnt,n,a[2010];
void dfs(int x,int ans){
if(ans==n) {
cnt++;
return ;
}
if(ans>n) return ;
for(int i=x;i*i<=n-ans;++i) dfs(i,ans+i*i);
}
int main(){
cin>>n;
dfs(1,0);
cout<<cnt;
return 0;
}//爆搜+剪枝 65pts
有可能优化到80pts吗(使用dfs)