有一根长为L的平行于x轴的细木杆,其左端点的x坐标为0(故右端点的x坐标为L)。刚开始时,上面有N只蚂蚁,第i(1≤i≤N)只蚂蚁的横坐标为xi(假设xi已经按照递增顺序排列),方向为di(0表示向左,1表示向右),每个蚂蚁都以速度v向前走,当任意两只蚂蚁碰头时,它们会同时调头朝相反方向走,速度不变...
分类:
其他好文 时间:
2014-10-01 03:55:30
阅读次数:
287
思路还是相当地巧妙。求余数的话,(a+b)%n=(a%n+b%n)%n;用vector来表示整数的话(出现1的位置),可以避免溢出。注意第20行,在更新remainders[(j+r)%n]时,要确保每个remainders的每个序列都是递增的,不能存在相等的情况。 1 #include 2 #i....
分类:
其他好文 时间:
2014-09-30 15:18:09
阅读次数:
124
编程之美2.4n=12时,1,11,12这3个数包含1,所以1的个数是5.Line 9是为了防止factor溢出。 1 #include 2 #include 3 #include 4 using namespace std; 5 6 int countOne(int n) { 7 ...
分类:
其他好文 时间:
2014-09-30 00:51:01
阅读次数:
283
斐波那契数列是我们在学习C语言的时候,在递归那一章的经典实例,当然,还会有汉诺塔的例子。 这个问题时这样定义的: 0 (x f(x) = 1 (x == 1) f(x - 1) + f(x - 2) (x > 1) 看到这个递推公式后,我们很容易可以写出如下的代码:...
分类:
其他好文 时间:
2014-09-29 16:34:01
阅读次数:
165
这个题目是,给定一个整数 N,需要寻找另外一个整数 M,使得 N * M 得到的结果十进制表示中只存在1和0两个数字。首先看到这个题目,第一思想肯定是 使 M = 1,并依此递增 M 的值,直到 N * M 获得想要的效果,但是,如果 N 很大呢,那么计算量也是很大的,所以,我们需要寻求更好的解决办法。 书中提到的解决办法有点复杂,这里我介绍的方法也是非常简单的,就是倒过来思考问题,我们...
分类:
其他好文 时间:
2014-09-28 17:26:13
阅读次数:
164
问题:
写一个程序,让用户来决定Windows任务管理器(Task Manager)的CPU占用率(单核)。有以下几种情况:
1.CPU占用率固定在50%,为一条直线
2.CPU的占用率为一条直线,具体占用率由命令行参数决定(范围1~100)
3.CPU的占用率状态为一条正弦曲线
4.多核处理器情况下上述问题怎么解决
首先确定CPU占有率的定义,即在任务管理器的一个刷新周期内,...
分类:
其他好文 时间:
2014-09-28 17:11:03
阅读次数:
225
书中的题目是求两个数的最大公约数,其实这个问题时当我们学习C语言的时候老师就讲过的算法,和教学中的求素数是一个类型的问题。 我们当时学的方法是 “辗转相除法”,即利用公式: f(x, y) = f(y, x % y),直到 x % y == 0,取x就是两个数的最大公约数。 但是书中说道,乘除运算太浪费时间了,所以,我们可以换一种方法去思考这个问题,乘除不能用,就只能是加减了,...
分类:
其他好文 时间:
2014-09-27 16:38:40
阅读次数:
190
在一个数组中寻找最大的K个数,我们首先说一种非常简单的方法,利用快速排序中的分割算法,即我们经常看见的partition。这个函数会返回一个 int 类型的值,这个值代表的是前一半数字和后一半数字的分割点,前一半数字都小于等于后一半数字(递增排序),所以,我们只要找到相对应的分割点,即可以找到最大的K个数,或者最小的K个数,这就是利用线性方法可以完成任务的方法。 首先,给出函数声明:in...
分类:
其他好文 时间:
2014-09-27 15:16:59
阅读次数:
124
题目: 给定一棵二叉树,假定每个节点都用唯一的字符表示,具体结构如下:structNODE{NODE*pLeft;NODE*pRight;charchValue;}; 假设已经有了前序遍历和中序遍历结果,希望通过一个算法重建这棵树。 给定函数的定义如下:voidRebuild(char*pPreOr...
分类:
其他好文 时间:
2014-09-26 18:58:18
阅读次数:
134
这道题的意思是,给定一个数n,那么从1到n这n个数中,1出现了几次。这个问题开始看,肯定不容易做,往往都是利用最笨的方法,一个数一个数的找就行了,那么如果n很大,就需要非常多的时间了,书中提供了更好的方法,需要发现数字中存在的相关规律:对于数abcde,c这位出现1的次数分以下情况:1.若c > 1,结论是(ab + 1)* 100; 2.若c == 1,结论是(ab)* 100...
分类:
其他好文 时间:
2014-09-25 19:18:47
阅读次数:
129