一道很简单的dp水题
状态是dp[i]表示第i个数最小n,状态转移方程就是dp[i]=min(dp[i],dp[i-j]+1)其中j是可以开四次方的数
#include<iostream>
#include<cmath>
using namespace std;
int dp[100000],n;
int main()
{
cin>>n;
dp[0]=0;
for(int i=1;i<=n;i++)
dp[i]=100000000;
for(int i=1;i<=n;i++)
{
for(int j=1;j<i;j++)
{
if(pow(j,4)>i)
break;
int k=pow(j,4);
dp[i]=min(dp[i],dp[i-k]+1);
}
}
cout<<dp[n];
return 0;
}