《P11246 [GESP202409 六级] 小杨和整数拆分》

题目背景

对应的选择、判断题:试题 - GESP 202409 C++ 六级 - 洛谷有题

题目描述

小杨有一个正整数 n,小杨想将它拆分成若干完全平方数的和,同时小杨希望拆分的数量越少越好。

编程计算总和为 n 的完全平方数的最小数量。

输入格式

输入只有一行一个正整数 n。

输出格式

输出一行一个整数表示答案。

输入输出样例

输入 #1复制

复制代码
18

输出 #1复制

复制代码
2

说明/提示

数据规模与约定

对全部的测试数据,保证 1≤n≤105。

代码实现:

cpp 复制代码
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
const int MAXN = 100005;
const int INF = 1e9;

int dp[MAXN];

int main()
{
    int n;
    cin >> n;
    for(int i = 1; i <= n; i++) dp[i] = INF;
    dp[0] = 0;
    for(int i = 1; i * i <= n; i++)
    {
        int sq = i * i;
        for(int j = sq; j <= n; j++)
        {
            dp[j] = min(dp[j], dp[j - sq] + 1);
        }
    }
    cout << dp[n] << endl;
    return 0;
}
相关推荐
看我眼色行事^ \/ ^13 小时前
2024.05.11 360春招WEB前端编程题
算法
一只肥瘫瘫13 小时前
编码器 PLL 角度与速度观测器原理
人工智能·算法
Nil20814 小时前
leetcode 146LRU缓存
算法·leetcode·缓存
郝学胜_神的一滴14 小时前
干货版《算法导论》18:遍历增删原理、时间复杂度与集合序列实现全解
数据结构·算法
-dzk-15 小时前
【滑动窗口】LC 3.无重复字符的最长子串
算法·滑动窗口
zzxdear15 小时前
用 OR-Tools CP-SAT 求解最简单的柔性作业车间调度(FJSP)
算法
luj_176815 小时前
变频技术核心原理揭秘
服务器·c语言·开发语言·经验分享·算法
rannn_11115 小时前
【力扣hot100】图论专题+模板|DFS、BFS、拓扑排序...
java·算法·leetcode·深度优先·图论
_Narcissus_15 小时前
B树概念及操作笔记(含完整代码实现)
c语言·数据结构·数据库·c++·笔记·b树·算法
l12586515 小时前
# RAG多轮对话检索设计:Query重写如何让“那它呢“变成完整问题
前端·数据库·人工智能·python·算法·fastapi·milvus