题目大意:求用最多4个格子放数字,使得每个格子的数平方和为n的方案数
题解:随便乱搞一下
f[i][j]+=f[i−1][j−k∗k](k∈[0,j√])
我的收获:……
#include <iostream>
#include <cstdio>
using namespace std;
int n;
int f[5][10005];//前i块草皮构成j的方案数
int main()
{
cin>>n;
f[0][0]=1;
for(int i=1;i<=4;i++)
for(int j=1;j<=n;j++)
for(int k=0;k*k<=j;k++)//枚举正方形边长
f[i][j]+=f[i-1][j-k*k];
cout<<f[4][n]+f[3][n]+f[2][n]+f[1][n]<<endl;
}