flyinghearts
码龄15年
求更新 关注
提问 私信
  • 博客:166,972
    社区:513
    167,485
    总访问量
  • 50
    原创
  • 111
    粉丝
  • 12
    关注
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:福建省
加入CSDN时间: 2010-05-18
博客简介:

flyinghearts的专栏

博客描述:
flyinghearts#qq.com 新博客地址: www.cnblogs.com/flyinghearts
查看详细资料
个人成就
  • 获得60次点赞
  • 内容获得40次评论
  • 获得78次收藏
  • 博客总排名438,277名
创作历程
  • 2篇
    2013年
  • 4篇
    2012年
  • 4篇
    2011年
  • 40篇
    2010年
成就勋章
TA的专栏
  • C++
    5篇
  • 算法
    10篇
  • 编程之美读书笔记
    29篇
  • 面试题
    4篇
  • 面试题精解
    2篇

TA关注的专栏 0

TA关注的收藏夹 0

TA关注的社区 0

TA参与的活动 0

创作活动更多

新星杯·14天创作挑战营·第13期

这是一个以写作博客为目的的创作活动,旨在鼓励大学生博主们挖掘自己的创作潜能,展现自己的写作才华。如果你是一位热爱写作的、想要展现自己创作才华的小伙伴,那么,快来参加吧!我们一起发掘写作的魅力,书写出属于我们的故事。我们诚挚邀请你们参加为期14天的创作挑战赛!注: 1、参赛者可以进入活动群进行交流、互相鼓励与支持(开卷),虚竹哥会分享创作心得和涨粉心得,答疑及活动群请见:https://bbs.csdn.net/topics/619781944 【进活动群,得奖概率会更大,因为有辅导】 2、文章质量分查询:https://www.csdn.net/qc

90人参与 去参加
  • 最近
  • 文章
  • 专栏
  • 代码仓
  • 资源
  • 收藏
  • 关注/订阅/互动
更多
  • 最近

  • 文章

  • 专栏

  • 代码仓

  • 资源

  • 收藏

  • 关注/订阅/互动

  • 社区

  • 帖子

  • 问答

  • 课程

  • 视频

搜索 取消

编程之美读书笔记_1.3 一摞烙饼的排序_程序源代码

 1.3_pancake.cpp //1.3_pancake.cpp by flyinghearts#qq.com#include#include#include#includeusing namespace std;class Pancake{ vector cake; //当前各个烙饼的状态 vector cake
原创
博文更新于 2010.06.02 ·
1681 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

面试题: 找出数组中三个只出现一次的数

题目:数组中有三个数只出现一次,其它的数恰好出现两次,找出这三个数。     先考虑“只有两个数出现一次”的情况:可以找到一种方法,将数组划分为两部分,且让这两个数分别在不同部分,这样每部分所有数的异或值,恰好分别等于这两个数。一种简单的分法就是,先计算出这两个数的异或值M(等价于求数组中所有数的异或值),求出M值的二进制表示中的最低位1(其它位的1也可以,只不过麻烦点)在 +k位,然后根
原创
博文更新于 2013.03.21 ·
3753 阅读 ·
3 点赞 ·
0 评论 ·
3 收藏

mingw gcc的头文件存在结构定义错误!!

准确的讲是mingw所用的sdk ——  w32api,存在结构定义错误。  打开wingdi.h 定位到 tagGCP_RESULTSW 的结构定义位置,   typedef struct tagGCP_RESULTSW {    DWORD lStructSize;    LPWSTR lpOutString;    UINT *lpOrder;    int
原创
博文更新于 2013.03.21 ·
1772 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

面试题精解之二: 字符串、数组(1)

面试题精解之二: 字符串、数组(1) 本篇文章发表在下面三个博客中,如果出现排版问题,请移步到另一个博客。http://www.cppblog.com/flyingheartshttp://www.cnblogs.com/flyingheartshttp://blog.csdn.net/flyinghearts 1     在一个字符串中找到第一个只出现一次的字符,如输
原创
博文更新于 2012.03.20 ·
2914 阅读 ·
1 点赞 ·
0 评论 ·
3 收藏

避免计算过程中出现溢出的一个技巧

先看一道面试题: 长度为n的数组,由数字1到n组成,其中数字a不出现,数字b出现两次,其它的数字恰好出现一次。怎样通过只读遍历一次数组,找出数字a和b。  由于只能遍历一次,在遍历数组arr时,算出 a和b的差值,以及a和b的平方差,通过解方程,即可求得a和b。具体做法为:设:      s1 = 1 + 2 + ... + n           (= n * (n
原创
博文更新于 2012.03.20 ·
5280 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

Fibonacci数计算中的两个思维盲点及其扩展数列的通用高效解法

http://www.cppblog.com/flyingheartshttp://www.cnblogs.com/flyingheartshttp://blog.csdn.net/flyingheartspdf版本下载㈠ Fibonacci数刚接触Fibonacci数的时候,在网上看到“矩阵法”,看到要先实现一个矩阵乘法,感觉太麻烦了。后来仔细观察Fibonacc
原创
博文更新于 2012.02.28 ·
1249 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

面试题精解之一: 二叉树

面试题精解之一: 二叉树 本篇文章发表在下面三个博客中,如果出现排版问题,请移步到另一个博客。http://www.cppblog.com/flyingheartshttp://www.cnblogs.com/flyingheartshttp://blog.csdn.net/flyinghearts 1     求二叉树中相距最远的两个节点之间的距离2     判断
原创
博文更新于 2012.02.28 ·
9555 阅读 ·
1 点赞 ·
0 评论 ·
26 收藏

喝汽水问题

喝汽水问题                                                 by flyinghearts 有1000瓶汽水,喝完后每3个空瓶能换1瓶汽水,问最后最多可以喝几瓶汽水,此时剩余几个空瓶?  不妨假设,共有n瓶汽
原创
博文更新于 2011.09.23 ·
1491 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

数组左旋转k位 —— C++标准算法库中最悲剧的函数:rotate


 
要将一个数组的所有元素向左旋转k位,通常有三种算法:
 
算法1(分组交换):
若a长度大于b,将ab分成a0a1b,交换a0和b,得ba1a0,只需再交换a1 和a0。
若a长度小于b,将ab分成ab0b1,交换a和b0,得b0ab1,只需再交换a和b1。
不断将数组划分和交换,直到不能再划分为止。分组过程与求最大公约数很相似。
 读写内存各 n到2*n次
 
算法2 (三次反转)
利用ba
原创
博文更新于 2011.05.27 ·
1423 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

一道C++面试题的误区

一道很简单的题目,一般有下面4种解法:1 遍历两次,每次分别找出最小值和最大值。2 只遍历一次,每次取出的元素先与已找到的最小值比较,再与已找到的最大值比较。3 每次取两个元素,将较小者与已找到的最小值比较,将较大者与已找到的最大值比较。4 分治:将数组划分成两半,分别找出两边的最小值、最大值,则最小值、最大值分别是两边最小值的较小者、两边最大值的较大者。这4种算法,哪种效率最高,哪种最低?后两种算法只要进行1.5*N次比较,因而网上有不少解答都将它们列为最佳答案。但是,算法4用到了递归,而
原创
博文更新于 2011.05.03 ·
2025 阅读 ·
0 点赞 ·
1 评论 ·
2 收藏

螺旋矩阵 之二


 
 
问题
1 按顺时针方向构建(或螺旋访问)一个n * n的螺旋矩阵,效果见下图。
2 在不构造螺旋矩阵的情况下,给定坐标i、j值求其对应的值f(i, j)。
比如对6 * 6矩阵, f(2, 0) =19  f(2, 1) = 6
 
 
思路一
前一篇文章已经讨论了一类螺旋矩阵(由外向内),而这一类螺旋矩阵,则是由内向外扩散。这两类矩阵可以通过下面的方法相互转换。
原创
博文更新于 2011.01.01 ·
1484 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

螺旋矩阵


问题
1 按顺时针方向构建一个m * n的螺旋矩阵(或按顺时针方向螺旋访问一个m * n的矩阵):
2 在不构造螺旋矩阵的情况下,给定坐标i、j值求其对应的值f(i, j)。
比如对11 * 7矩阵, f(6, 0) = 27  f(6, 1) = 52 f(6, 3) = 76  f(6, 4) = 63
 
 
构建螺旋矩阵
对m * n 矩阵,最先访问最外层的m * n的矩形上的元素,接着再访问里面一层的 (m - 2)
原创
博文更新于 2010.12.23 ·
1154 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

螺旋矩阵


问题
1 按顺时针方向构建一个m * n的螺旋矩阵(或按顺时针方向螺旋访问一个m * n的矩阵):
2 在不构造螺旋矩阵的情况下,给定坐标i、j值求其对应的值f(i, j)。
比如对11 * 7矩阵, f(6, 0) = 27  f(6, 1) = 52 f(6, 3) = 76  f(6, 4) = 63
 
 
构建螺旋矩阵
对m * n 矩阵,最先访问最外层的m * n的矩形上的元素,接着再访问里面一层的 (m - 2)
原创
博文更新于 2010.12.23 ·
1340 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

25匹马取前5



问题: 
一共有25匹马,有一个赛场,赛场有5个赛道,就是说最多同时可以有5匹马一起比赛。假设每匹马都跑的很稳定,不用任何其他工具,只通过马与马之间的比赛,试问最少得比多少场才能知道跑得最快的5匹马?
 
思路:
先将25匹马分成五组,进行五场比赛。第六场比赛可以考虑都取各个小组的第一名(或第二名)。假设都取各小组的第一名,根据这场比赛的排名,将原来的小组分别编号为a、b、c、d、e,并将原来的25匹马分别编号为:
a1  b1 
原创
博文更新于 2010.12.03 ·
5456 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

编程之美读书笔记_1.1_让CPU占用率曲线听你指挥


题目:写一个程序,让用户来决定Windows任务管理器(Task Manager)的CPU占用率。程序越精简越好,计算机语言不限。例如,可以实现下面三种情况:
 
1.    CPU的占用率固定在50%,为一条直线;
2.    CPU的占用率为一条直线,但是具体占用率由命令行参数决定(参数范围1~ 100);
3.    CPU的占用率状态是一个正弦曲线。
 
控制CPU占用率,不仅仅是出于好玩而已。以前的某些程序,特别是某些老游戏,
原创
博文更新于 2010.12.02 ·
1568 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

N个数计算24点


N个数计算24点
问题:
    N个1到13之间的自然数,找出所有能通过加减乘除计算(每个数有且只能用一次)得到24的组合?
 
计算24点常用的算法有:① 任取两个数,计算后,将结果放回去,再从剩下的数中任取两个,如此反复直到只剩下一个数;② 先构建前缀/后缀表达式,再计算该表达式;③ 用集合保存中间结果,集合间两两进行合并计算得到新集合(或者对给定的一个集合,对其所有的子集合进行合并计算)。
本文采用第一种方法。定义六种操作符:ADD、SU
原创
博文更新于 2010.09.21 ·
3248 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

《编程之美》读书笔记08:2.9 Fibonacci序列 —— O(log n)求Fibonacci数列(非矩阵法)

《编程之美》读书笔记08:2.9 Fibonacci序列 计算Fibonacci序列最直接的方法就是利用递推公式 F(n+2)=F(n+1)+F(n)。而用通项公式来求解是错误的,用浮点数表示无理数本来就有误差,经过n次方后,当n相当大时,误差能足够大到影响浮点数转为整数时的精度,得到的结果根本不准。用矩阵来计算,虽然时间复杂度降到O(log n),但要用到矩阵类,相当麻烦。观察:
原创
博文更新于 2010.09.21 ·
2019 阅读 ·
0 点赞 ·
1 评论 ·
1 收藏

《编程之美》读书笔记01: 1.2中国象棋将帅问题

《编程之美》读书笔记01: 1.2中国象棋将帅问题       刚看到题时,首先想到的是除法计算除数的商和余数(eax和edx)。后来才想到C/C++中需要动态多维数组时,new一维数组来模拟多维数组时所进行的多维数组的下标和实际偏移量的转换,我想很多人学习C或C++时都做过这种事吧。     本以为题目要求输出将帅在棋盘上的具体位置,如d10、f1,但书中的解法给的是相对位置,解决起
原创
博文更新于 2010.09.20 ·
1837 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

《编程之美》读书笔记02: 1.3 一摞烙饼的排序

《编程之美》读书笔记02: 1.3 一摞烙饼的排序 问题:    星期五的晚上,一帮同事在希格玛大厦附近的“硬盘酒吧”多喝了几杯。程序员多喝了几杯之后谈什么呢?自然是算法问题。有个同事说:“我以前在餐馆打工,顾客经常点非常多的烙饼。店里的饼大小不一,我习惯在到达顾客饭桌前,把一摞饼按照大小次序摆好——小的在上面,大的在下面。由于我一只手托着盘子,只好用另一只手,一次抓住最上面的几块饼,
原创
博文更新于 2010.09.20 ·
2114 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

多重背包O(N*V)算法详解(使用单调队列)

多重背包问题:有N种物品和容量为V的背包,若第i种物品,容量为v[i],价值为w[i],共有n[i]件。怎样装才能使背包内的物品总价值最大?网上关于“多重背包”的资料倒是不少,但是关于怎么实现O(N*V)算法的资料,真得好少呀,关于“单调队列”那部分算法,又没说明得很清楚,看了几遍没看懂原理,只好自己动脑去想怎么实现O(N*V)算法。若用F[i][j]表示对容量为j的背包,处理完前i种物品后,背包内物品可达到的最大总价值,并记m[i] = min(n[i], j / v[i])。放入背包的第i种物品的数目可
原创
博文更新于 2010.09.20 ·
39743 阅读 ·
51 点赞 ·
4 评论 ·
113 收藏
加载更多