124.Perfect Squares

Given a positive integer n, find the least number of perfect square numbers (for example, 1,
4, 9, 16, ...
) which sum to n.

For example, given n = 12, return 3 because 12
= 4 + 4 + 4
; given n = 13, return 2 because 13
= 4 + 9
.

Credits:

Special thanks to @jianchao.li.fighter for adding this problem and creating all test cases.

Subscribe to see which companies asked this question.

给定一个正整数,求该正整数可以被被分解成完全平方数的个数。

For example, given n = 12, return 3 because 12 = 4 + 4 + 4; given n = 13, return 2 because 13 = 4 + 9.

采用动态规划的思想。

如果n为完全平方数,则f[n]=1;

否则f(n) = min{f(k)+f(n-k)},1<=k<=n/2

/**
	 * 给定一个正整数,求该正整数可以被被分解成完全平方数的个数。
	 * For example, given n = 12, return 3 because 12 = 4 + 4 + 4; given n = 13, return 2 because 13 = 4 + 9.
	 * 采用动态规划的思想。
	 * 如果n为完全平方数,则f[n]=1;
	 * 否则f(n) = min{f(k)+f(n-k)},1<=k<=n/2
	 * @date 20160510
	 * @param n
	 * @return
	 */
	public int numSquares(int n) {

		if(n == 1){
			return 1;
		}
		int f[] = new int[n+1];//f[i]表示给定i时其对应的符合条件的完全平方数个数。
		f[1]=1;

		for(int i=2;i<=n;i++){
			/*首先判断是否为一个完全平方数*/
			double y = Math.sqrt(i);
			if( y - (int)y == 0){
				f[i] = 1;
				continue;
			}
			/*不为完全平方数时*/
			f[i] = f[1]+f[i-1];
			for(int k=2;k<=i/2;k++){
				if(f[k]+f[i-k]<f[i]){
					f[i] = f[k]+f[i-k];
				}
			}
		}
        return f[n];
    }
时间: 2024-11-13 08:01:07

124.Perfect Squares的相关文章

hdu 3524 Perfect Squares 推公式求逆元

Perfect Squares Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 501    Accepted Submission(s): 272 Problem Description A number x is called a perfect square if there exists an integer b satisfy

Light OJ 1288 Subsets Forming Perfect Squares 高斯消元求矩阵的秩

题目来源:Light OJ 1288 Subsets Forming Perfect Squares 题意:给你n个数 选出一些数 他们的乘积是完全平方数 求有多少种方案 思路:每个数分解因子 每隔数可以选也可以不选 0 1表示 然后设有m种素数因子 选出的数组成的各个因子的数量必须是偶数 组成一个m行和n列的矩阵 每一行代表每一种因子的系数 解出自由元的数量 #include <cstdio> #include <cstring> #include <algorithm&g

CF914A Perfect Squares

CF914A Perfect Squares 题意翻译 给定一组有n个整数的数组a1,a2,…,an.找出这组数中的最大非完全平方数. 完全平方数是指有这样的一个数x,存在整数y,使得x=y^2y2 . 输入格式 第一行输入一个单独的整数n(1<=n<=1000 ),n为该组数的数量. 接下来有n个整数,a1,a2,an(-10^6<=a<=10^6) 数据保证至少存在一个整数是非完全平方数. 题目描述 Given an array a_{1},a_{2},...,a_{n}a1?

Lintcode Perfect Squares

Given a positive integer n, find the least number of perfect square numbers (for example,1, 4, 9, 16, ...) which sum to n. Given n = 12, return 3 because 12 = 4 + 4 + 4Given n = 13, return 2 because 13 = 4 + 9 刷这道题目发现网上有四种解法 http://www.cnblogs.com/gr

[LeetCode] Perfect Squares

Given a positive integer n, find the least number of perfect square numbers (for example, 1, 4, 9, 16, ...) which sum to n. For example, given n = 12, return 3 because 12 = 4 + 4 + 4; given n = 13, return 2 because 13 = 4 + 9. Credits: Special thanks

一、Perfect Squares 完全平方数

h3 { background-color: palegreen } 一原题 Given a positive integer n, find the least number of perfect square numbers (for example, 1, 4, 9, 16, ...) which sum to n. For example, given n = 12, return 3 because 12 = 4 + 4 + 4; given n = 13, return 2 beca

279. Perfect Squares

Total Accepted: 48616 Total Submissions: 142008 Difficulty: Medium Given a positive integer n, find the least number of perfect square numbers (for example, 1, 4, 9, 16, ...) which sum to n. For example, given n = 12, return 3 because 12 = 4 + 4 + 4;

LeetCode 279. Perfect Squares

Question: Given a positive integer n, find the least number of perfect square numbers (for example, 1, 4, 9, 16, ...) which sum to n. For example, given n = 12, return 3 because 12 = 4 + 4 + 4; given n = 13, return 2 because 13 = 4 + 9. Code: public

Perfect Squares

Given a positive integer n, find the least number of perfect square numbers (for example, 1, 4, 9, 16, ...) which sum to n. Example Given n = 12, return 3 because 12 = 4 + 4 + 4Given n = 13, return 2 because 13 = 4 + 9 分析: 首先把所有 1-n 的square numbers找出