#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define str string
int n;
int dp[100005];
int main(){
	ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cin>>n;
    for(int i=0;i<=n;i++){
    	dp[i]=i;
	}
	for(int i=4;i<=n;i++){
		for(int j=1;j<=i;j++){
			dp[i]=min(dp[i],dp[i-j]+1);
		}
	}
	cout<<dp[n]<<endl;
	return 0;
}

1 条评论

  • @ 2026-9-6 16:29:23

    改一下

    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long
    #define str string
    int n,k;
    int dp[100005],a[100005];
    int main(){
    	ios::sync_with_stdio(false);
        cin.tie(nullptr);
        cin>>n;
        for(int i=1;i*i<=n;i++){
        	a[++k]=i*i;
    	}
    	memset(dp,0x3f,sizeof(dp));
        dp[0]=0;
    	for(int i=1;i<=k;i++){
    		for(int j=a[i];j<=n;j++){
    			dp[j]=min(dp[j],dp[j-a[i]]+1);
    		}
    	}
    	cout<<dp[n]<<endl;
    	return 0;
    }
    • 1