创新工场软工题2-2

原创 2016年08月29日 10:00:09

题目2:

给一个正整数 n, 找到若干个完全平方数(比如1, 4, 9, … )使得他们的和等于 n。你需要让平方数的个数最少。
给出 n = 12, 返回 3 因为 12 = 4 + 4 + 4。
给出 n = 13, 返回 2 因为 13 = 4 + 9。


第二题:完整代码:C++

// 2016/9/6更新
#include<iostream>
#include<vector>
using namespace std;

int NumOfSquare(int num)
{
    if(num<1) return 0;
    if(num==1) return 1;
    //找出完全平方数,记录在数组容器中
    vector<int> arr;
    int temp=1;
    for(int i=2; temp<num; i++)
    {
        arr.push_back(temp);
        temp=i*i;               
    }

    const int n=arr.size(); 
    int MinNum=num;  //初值为最大次数

    //设置两个容器,记录最相加的平方数
    vector<int> Current;   //当前最少数字平方数
    vector<int> Candidate;  //候选最少数字平方数

    for(int i=n-1; i>=0; i--)
    {
        int leftNum=num;  //贪心算法
        int CandidateMin=0;    //候选最小次数
        for(int j=i; j>=0; j--)
        {
            if(leftNum==arr[j])
            {
                Candidate.push_back(arr[j]);
                CandidateMin++;
                break;
            }
            while(leftNum>arr[j])
            {
                Candidate.push_back(arr[j]);
                leftNum-=arr[j];
                CandidateMin++;
            }
        }
        //更新最小平方和的数目
        //MinNum=(MinNum<CandidateMin?MinNum:CandidateMin);
        if(MinNum>CandidateMin)
        {
            MinNum=CandidateMin;
            Current.clear();
            Current.assign(Candidate.begin(),Candidate.end());
            Candidate.clear();
        }
    }
    //输出
    for(int i=0; i<Current.size(); i++)
        cout<<Current[i]<<" ";
    cout<<endl;
    return MinNum;

}

int main()
{
    cout<<NumOfSquare(13)<<endl;
    cout<<endl;
    cout<<NumOfSquare(100)<<endl;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

创新工场软工题2-1

题目: 1将链表中的所有元素为奇数的节点移到元素为偶数节点的前面,并保证奇数之间顺序不变,偶数之间顺序不变。示例: 交换前链表的顺序 交换后链表的顺序 4→5→3→1→2 ==...
  • qianggezaici
  • qianggezaici
  • 2016年08月29日 09:57
  • 326

python 笔试面试 准备15题

本文由EarlGrey@编程派独家编译,转载请务必注明作者及出处。   原文:Sheena@codementor 译文:编程派 引言 想找一份Python开发工作吗?那你很可能得证明自己知...
  • sevensevensevenday
  • sevensevensevenday
  • 2017年02月28日 15:46
  • 433

创新工场:实习感想

本文源自2012年7月 基本信息:我的好友,热情淳朴,努力谦虚。 1)对学历的要求?研究生和本科生什么比例? 对学历要求不高,本科生多些,比例大概是1:1.5. 2)对“是本地人”的要求高吗?...
  • jiangyoushijie
  • jiangyoushijie
  • 2014年11月21日 16:43
  • 520

获真格、创新工场、火星人、节点等十余家知名资本青睐——YeeCall要成为能赚钱的区块链社交平台

点击上方“蓝色字”可关注我们!记者:铅笔盒近日,真格基金布局的第一个区块链项目——海外通讯社交应用YeeCall浮出水面,进入公众视野。据了解,该项目不仅有真格基金,创新工场,元璟资本,如川投资,隆领...
  • IJXR1A64JI53L
  • IJXR1A64JI53L
  • 2018年01月12日 00:00
  • 190

图书管理系统的UML建模设计(练习)

1 需求分析描述图书信息管理系统是使用计算机实现图书大量信息处理的电子档案管理系统,在本系统中主要满足借书者、图书管理员和系统管理员3方面的需求。对借书者来说主要是查询个人信息、查询图书信息、预定当前...
  • smszhuang168
  • smszhuang168
  • 2010年10月31日 19:05
  • 12205

去百度还是去创新工场? 信开复还是信彦宏?

我前两天,收到一封邮件,一位快要毕业的的大学生问我,是去百度,还是去创新工场?他在来信中说,从个人道德价值观来说,他想去创新工场,要远离流氓企业,不然会有狼狈为奸、助纣为虐的感觉,对不起自己。但是创新...
  • sunboy_2050
  • sunboy_2050
  • 2011年11月23日 16:51
  • 9867

软工之可行性分析和需求分析

1.引言    软工即用科学,工程的思想来开发软件,大体分为设计前,设计中,和设计后三个阶段。而在设计前就是要分析定位好这个软件能做吗?做什么?的问题。好比说我要说我要盖一座楼,首先我要分析一下资金...
  • boniesunshine
  • boniesunshine
  • 2015年09月19日 10:55
  • 840

创新工场--地址,及联系方式

地  址:中国北京市海淀区清华科技园C座 邮  编:100084 网  址:www.innovation-works.com E-mail:contact@innov...
  • epicyong333
  • epicyong333
  • 2009年09月07日 19:15
  • 2943

软工总结系列1——概论

软件工程学是一门偏理论学科,下面为哈工大视频中关于软件工程的概论总结,重点是生存周期和各个阶段及相关模型: 软件的生存周期和相关模型如图所示:...
  • shichaocui187
  • shichaocui187
  • 2013年11月20日 16:34
  • 643

创新工场-涂鸦移动 面经

今天去涂鸦移动,挺期待的。一面技术官,挺舒服的。 一开始给我两个a.c b.c的文件,要共享一个变量,有什么方式。这个东西没做过,所以凭自己的感觉去说了。如果给我个编译器,自己能试试耍出来,然后就跳...
  • qq756568797
  • qq756568797
  • 2015年11月30日 19:11
  • 713
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:创新工场软工题2-2
举报原因:
原因补充:

(最多只允许输入30个字)