给一个正整数 n, 找到若干个完全平方数(比如1, 4, 9, ... )使得他们的和等于 n。你需要让平方数的个数最少。
来源:互联网 发布:安卓sdk安装教程linux 编辑:程序博客网 时间:2024/05/01 23:57
给出 n = 12, 返回 3 因为 12 = 4 + 4+ 4。
给出 n = 13, 返回 2 因为 13 = 4 + 9。
/**思路:*1设置n的副本为t*2.先求出平方数小于t的最大整数数maxSqrt*3.将maxSqrt*maxSqrt放到二维数组arr[i],且t-=maxSqrt*maxSqrt*4.反复进行2~3,直到t为0*5.设置i+=1*6.反复进行1~5,直到i>maxSqrt*7.分析arr,求出平方数的个数最少的情况给一个正整数 n, 找到若干个完全平方数(比如1, 4, 9, ... )使得他们的和等于 n。你需要让平方数的个数最少。给出 n = 12, 返回 3 因为 12 = 4 + 4 + 4。给出 n = 13, 返回 2 因为 13 = 4 + 9。*/#include<iostream>#include<math.h>#include<vector>using namespace std;//求出平方数小于x的最大整数数int getMaxSqrt(int x){float s = sqrt((double)x);int a = floor(s);return a;}void Test(int n){int temp = n;// sum n = 12vector<int> ar;vector<vector<int>> arr;int maxSqrt = getMaxSqrt(n);int sum = 0;int j = 0;int MaxSqrt = maxSqrt;for(int i = maxSqrt; i > 0; i--){while(temp > 0){ar.push_back(maxSqrt * maxSqrt);temp -= maxSqrt * maxSqrt;//sum += maxSqrt * maxSqrt;maxSqrt = getMaxSqrt(temp);}//for(vector<int>::iterator iter = ar.begin(); iter != ar.end(); iter++)//cout<<*iter<<' ';//cout<<endl;arr.push_back(ar);ar.clear();maxSqrt = --MaxSqrt;temp = n;}//计算个数最小的情况int minLen = arr[0].size();int index = 0;for(int i = 0; i < arr.size(); i++){if(arr[i].size() < minLen){minLen = arr[i].size();index = i;}}for(int i = 0; i < arr[index].size(); i++){cout<<arr[index][i]<<' ';}cout<<endl;}int main(){Test(12);Test(13);//system("pause");return 0;}
0 0
- 给一个正整数 n, 找到若干个完全平方数(比如1, 4, 9, ... )使得他们的和等于 n。你需要让平方数的个数最少。
- 给一个正整数 n, 找到若干个完全平方数(比如1, 4, 9, ... )使得他们的和等于 n。你需要让平方数的个数最少。
- 给一个正整数n,找出个数最小的平方数让他们的和等于n
- 给定一个正整数n,找到比n小的完美平方数相加和等于n的最小数目。
- 给定一个奇数n,比如n=3,生成1到n平方的数,如1到9,填入九宫格,使得横竖斜的和都相等。
- 给定一个奇数n,比如n=3,生成1到n平方的数,如1到9,填入九宫格,使得横竖斜的和都相等。
- 把正整数 n 转化成最少个数字的平方
- 完全平方数的个数
- 完全平方数的个数
- 给一个整数数组,找到两个数使得他们的和等于一个给定的数 target(容易)
- Tsinsen P3994(大等于n的最小完全平方数-比细心)
- 华为机试—亮着电灯的盏数(1—N完全平方数的个数)
- 返回第n个无平方数因数的数
- 求给定数等于最少的几个完全平方数之和
- 求给定数等于最少的几个完全平方数之和
- Switch Game<开灯问题>关于n以内的完全平方数个数求解
- 某正整数列{n},当n的平方为回文数的时候,输出n
- hdu4982 是否存在k个数和为n并且存在其中k-1个数和为完全平方数的情况
- 项目0
- 控制ip范围内访问(转)
- iframe高度宽度自适应
- java final关键字
- Android 序列化 Parcelable接口用法
- 给一个正整数 n, 找到若干个完全平方数(比如1, 4, 9, ... )使得他们的和等于 n。你需要让平方数的个数最少。
- Java NIO系列教程(十) Java NIO DatagramChannel
- easyui datagrid自定义按钮列,即最后面的操作列(实现方式一)
- 常用的组件设置以及为空判断
- iOS两种方法拨打电话
- 回调函数
- 使用 P3P 规范让 IE 跨域接受第三方 cookie
- ListView的Adapter有多个ViewHolder的时候导致的ViewHolder类型转换错误!
- 初学者从oracle到mysql之——日期字符串转换