d[s]:凑齐s值的方法数
d[s]=sum(d[s-i*i])
1=<i*i<=s
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
int d[305];
memset(d,0,sizeof(d));
d[0]=1;
for (int i=1;i<=17;i++){
for (int s=i*i;s<=300;s++){
d[s]+=d[s-i*i];
}
}
while(scanf("%d",&n)!=EOF&&n){
printf("%d\n",d[n]);
}
return 0;
}
计算凑齐s的方法数
本文介绍了一种算法,用于计算凑齐特定数值s的方法数,通过递归和动态规划实现。
423

被折叠的 条评论
为什么被折叠?



