摘要: 输入整数n,求完全平方数的和等于n中完全平方数用得最少的个数 直观想法搜索,先处理n以内的完全平方数,然后搜索,但效率不行,整数范围内的完全平方数有40000多个,用搜索的方法相当于求集合的子集个数,时间是2^n,肯定超时 正解:dp dp[i]表示完全平方数和等于i的最优解 dp[i]=min(d 阅读全文
posted @ 2016-09-01 23:39 0_summer 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 给定一个派生类,这个派生类只继承了基类的next()和hasNext()方法,现在要求重写派生类的next(),hasNext()和peek()方法 peek()始终取next指针的后一个元素 分析: peek()取的是next指针的后一个元素,并且只有next()和hasNext()两个方法可用, 阅读全文
posted @ 2016-09-01 23:15 0_summer 阅读(425) 评论(0) 推荐(0) 编辑
摘要: 生态系统游戏,输入一个01矩阵,0代表死了,1代表活着,这是当前状态,求下一个状态: 1.当前格子活的: 1)周围活着的格子<2或者>3,则当前格子死 2)否则当前格子保持 2.当前格子死: 1)周围活着的格子==3,则当前格子活 2)否则当前格子保持 周围格子是指周围8个 如果不要求空间可以重新申 阅读全文
posted @ 2016-09-01 22:19 0_summer 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 输入一个数组,其中除了两个数只出现一次外,其余的数均出现两次,找出只出现一次的数 一个系列http://www.cnblogs.com/0summer/p/5830714.html 这类题都可用multiset来做,时间ON,不过空间也是ON 既然题目要求空间O1,说明肯定有规律 本题同样位运算,设 阅读全文
posted @ 2016-09-01 17:43 0_summer 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 输入一个数组,其中除了一个元素只出现一次外,其余元素都出现3次,找出只出现一次的元素 一个系列http://www.cnblogs.com/0summer/p/5829973.html 位运算。出现3次的元素,二进制位上的0或1也必然有3次,以二进制位为划分,求每个二进制位中1出现的次数,%3得到的 阅读全文
posted @ 2016-09-01 17:35 0_summer 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 输入一个数组,其中每个元素都出现两次,只有一个元素出现一次,求这个只出现一次的元素,要求ON 第一种做法:用set<int> 保存元素,遍历数组,如果当前元素在set中存在则删除这个元素,否则插入这个元素,最后剩下的就是所求。空间ON 第二种做法:用位运算,异或,最后剩下的就是所求,时间ON,空间O 阅读全文
posted @ 2016-09-01 15:08 0_summer 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 根据后缀表达式求值 过程:遍历后缀表达式 1.如果是运算数,入栈 2.如果是运算符,取出栈顶的两个运算数,计算,将结果入栈 最后取出栈顶元素即为结果。这里将string转换为数字用了<sstream>的istringstream,也可以用sscanf,但是参数是char str[] 阅读全文
posted @ 2016-09-01 14:58 0_summer 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 输入一个数组和一个数s,求数组中的子数组的连续和>=s中最短的子数组 第一次的做法是: 先处理前缀和,然后二重循环枚举子数组,用前缀和sum[j]-sum[i-1]取得子数组的连续和,与s比较,更新答案。ON^2,超时 第二次做法: 既然ON^2超时,说明肯定是NlgN或者ON的做法,这题数组无序而 阅读全文
posted @ 2016-09-01 14:24 0_summer 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 输入一个数组,a[i]表示第i位置的房子的价值,这些房子围成一个圈,相邻的两个房子不能同时抢,问能抢到的最大的价值 和这些题是一个系列http://blog.csdn.net/ac_0_summer/article/details/52348192 这里围成一个圈,那么对最后一个房子来说: 1.如果 阅读全文
posted @ 2016-09-01 14:00 0_summer 阅读(587) 评论(0) 推荐(0) 编辑
摘要: 输入一个数组,求第k大的数 利用快排,因为快排的每一轮递归使一个元素归位,所以判断当前归位的元素是否是第k个,若是,返回 阅读全文
posted @ 2016-09-01 13:19 0_summer 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 有n个课程,输入一些二元组(x,y)表示先学习x必须先学习y,求根据输入的二元组的关系,能否修完所有课程 拓扑排序:选择一个入度为0的节点,删除该节点并且删除该节点所有的指出去的边,重复这个过程,知道没有入度为0的节点或者所有节点都被删除 bfs来做。不用bfs也行,模拟这个过程就行了 阅读全文
posted @ 2016-09-01 00:06 0_summer 阅读(92) 评论(0) 推荐(0) 编辑