求整数的最小完全平方数个数
来源:互联网 发布:python 去除列表重复 编辑:程序博客网 时间:2024/05/21 17:10
今天在LeetCode OJ上刷算法,以前没有怎么看算法题。然后对着一道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; given n = 13, return 2because 13 = 4 + 9.
题目:
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 2because 13 = 4 + 9.
- #include <stdio.h>
#include <stdlib.h>
/* 记Array(i)为数字i的最小完全平方数个数
* Array(0) = 0;
* Array(1) = Array(1-1^2)+1;
* Array(2) = Array(2-1^2)+1;
* Array(3) = Array(3-1^2)+1;
* 而Array(4) 有两种情况:
* Array(4) = Array(4-1^2)+1;
* Array(4) = Array(4-2^2)+1;
* 而此时可知Array(4) = min{Array(4-1^2)+1,Array(4-2^2)+1}=1;
* 依次类推,找到其规律,可得
* Array(i) = min{Array(i-j^2)+1} (其中1<=i;1<=j且j=1,2,3...,在下面第二层for语句中,
* 跳出的条件是当i-j^2<0,对于数组来说下标不能小于0)
*/
void numSquares(int n) {
int *Array = (int*)malloc(sizeof(int)*(n+1)),mindata;//mindata为记录最小值
Array[0] = 0;
for (int i=1;i<=n;i++) //从1开始历遍到n,用数组记录每个元素i的最小完全平方数个数
{
mindata = Array[i-1];
for (int j=1;;j++) //历遍所有的i-j^2,j=1,2,3...,然而找出最小的完全平方数个数
{
if (i-j*j>=0&&Array[i-j*j]<mindata) //对其所有的情况进行比较,找出最小者
{
mindata = Array[i-j*j];
}
if(i-j*j<0) break;
}
Array[i] = mindata+1;//Array(i-j^2)+1,找出最小者后加1
if(i==1) printf("Num\t\tleastNum(counts)\n");
printf("%d\t\t%d\n",i,Array[i]);
}
free(Array);
}
int main()
{
int data;
scanf("%d",&data);
numSquares(data);
return 0;
}
0 0
- 求整数的最小完全平方数个数
- 求A到B之间完全平方数的个数
- 完全平方数的个数
- 完全平方数的个数
- NYOJ 完全平方数的个数
- nyoj1126 完全平方数的个数
- nyoj 1126完全平方数的个数
- NYOJ 完全平方数的个数
- [初学者笔记]从 求区间内完全平方数的个数 中学到的
- 给定正整数b,求最大的整数a,满足a*(a+b) 为完全平方数
- C算法-求一个加上100和168后为完全平方数的整数
- 华为机试—亮着电灯的盏数(求完全平方数的个数)
- 【CSDN编程挑战】完全平方数的个数
- 南阳理工 1126 完全平方数的个数
- python 求8位各不相同的整数,1357位之和等于2468位之和,且为完全平方数
- 求类似aabb形式的完全平方数
- 在10万以内判断,一个整数加上100后是一个完全平方数,再加上168又是一个完全平方数,求该数
- 一个整数,加上100后是一个完全平方数,再加上168又是一个完全平方数。求这个数。
- 堆排序、胜者树、败者树
- MFC-自绘控件(CComBox篇)
- Handler使用
- 第五周上机实践项目——项目1-三角形类雏形(1)
- MySQL批量SQL插入性能优化
- 求整数的最小完全平方数个数
- java第二十六节-UDP编程
- 802.11p的信道功能
- 第三章 数组和字符串
- POJ 1915 Knight Moves(广搜)
- java事件处理的三种方式
- hdu-1298 T9(字典树+DFS)
- android,bindService实例
- linux基础