
C++笔试面试
Lion小礼
嘿嘿+呵呵
展开
-
300瓶水3个空瓶换1瓶满的
300瓶水喝了三瓶后就可以用三个空瓶换一个满的,问一共能喝多少瓶?(这个题很简单)#include using namespace std;int main(){ int num = 0, all = 0, exchange_with = 3, get = 0; cout << "请输入最初的水的数量:"; cin >> num; all = num; whil原创 2013-01-24 23:49:48 · 787 阅读 · 0 评论 -
邮票面值,求最大的连续区间
假设一个国家发行了n种面值的邮票,面值已知,并规定每封信上最多只能贴m张邮票,设计一个算法,求出在一个信封上能贴出的最大连续区间.例如发行了4种邮票面值分别为1,4,12,21.每封信上最多能贴5张邮票,求出能贴出的最大连续区间.即区间(a,b)则在a,b之间的任意个整数值都能构贴出来.今天到此为止,明天继续原创 2013-01-24 23:56:11 · 1051 阅读 · 0 评论 -
上亿个数据保存在硬盘中,找出最大的N个。
(1)先选N个元素组成一个小根堆,然后遍历剩下的数据,如果第i个元素M大于小根堆的根结点,就删除这个根结点,并将元素M插入这个小根椎,最后,小根堆中的元素就是最大的N个元素。(2)只要开辟一个稍微大一点的缓冲区存放大于某选定值的数据即可,当缓冲满时,刷新选定值为缓冲区的第n大值,即可(同时清理缓存区)。(3)用O(M)的时间找出第N大元素,然后再遍历一边找出比这个数大的N个数即可,理论复杂转载 2013-01-28 22:51:03 · 784 阅读 · 0 评论 -
在一条长长的走廊上依次排列着100把锁着的锁头。——开锁的问题
题目:在一条长长的走廊上依次排列着100把锁着的锁头。你从把这100把锁全部打开开始(第1遍)。然后,你把所有序号是2的倍数的锁头再锁上(第2遍)。接下来,你依次走到所有序号是3的倍数的锁头前,如果它是打开的,就把它锁上;如果它是锁上的,就把它打开——我们把这称为“切换锁头的状态”(第3遍)。你继续像这样在第N遍去切换所有序号是N的倍数的锁头的状态。当进行到第100遍时,你将只切换第100把锁原创 2013-01-28 23:11:51 · 2348 阅读 · 0 评论 -
一个人走一个n阶的楼梯,他一步可以走1阶,2阶,3阶,这三种情况,问走完这n阶的楼梯共有多少种不同的走法?
当时脑子不够用,10级楼梯嘛,每一次至少走一步,走完10步最多10次,那么用10个循环可以搞定,够傻逼的吧,看下面。int method_num = 0;int judge_num = 0;bool judge(int total){ judge_num++; if(total > 10) return false; else if(total == 10)原创 2013-01-28 20:57:06 · 5601 阅读 · 2 评论 -
求对称字符串的最大长度
//返回最长的对称字符串的长度,如google,对称字符串是goog,最大长度为4int symStr(char* source){ if('\0' == *source) return 0; int maxLength = 1; char* current = source; while('\0' != *current) { int max1 = 0; int sym原创 2013-03-06 10:57:51 · 755 阅读 · 0 评论