
试题
文章平均质量分 74
ken_scott
这个作者很懒,什么都没留下…
展开
-
【试题】排列组合
在写一个远程的代码,如果本地有M个显示器,远程有N个显示器(M<=N),依据分辨率、显示器刷新频率等要求,需要对远程的N个显示器进行最佳分辨率修改,之后,需要从N个远程显示器中选择M个,跟本地显示器进行一对一的匹配。即从 A(N, M) = N! / (N-M)! 种组合选择1种最优匹配,这里用到了排列组合,而 std::next_permutation()用于全排列A(N, N) = ...原创 2020-04-26 18:10:57 · 345 阅读 · 0 评论 -
整数二进制位反转
无意间想到这个,写写:#include template IntType binary_reverse(IntType number){ size_t bit_count = sizeof(IntType) << 3; IntType max_signed = ~((IntType)1 << (bit_count - 1)); IntType re原创 2012-10-26 00:24:32 · 790 阅读 · 0 评论 -
复试题:1000!的尾部有多少个0
以前在论坛里看过这个题,当是想:只要算下1-1000中有多少个个位数是5、0的数就可以了,坛友们也多是这么回复的,所以,我就想当然地认为自己是对的,也就没去好好地验证下这个问题谁想,今天,我就被问到这个问题。当时想当然地说:“只要算下1-1000中有多少个个位数是2、5、0的数就可以了!”,“那你怎么转换成代码呢?”,我的内心想法大概是这样子的:“个位数是5的个数:1000 % 10 / 5原创 2012-09-26 23:37:17 · 1447 阅读 · 1 评论 -
辛波那契数列
大学时参加过一次“有道难题”的网上初赛,当时碰到了这题,当时没有写出满足要求的答案,之后便没再参加这种竞赛了题目描述如下:菲波那契数列可以用下列的式子表示:f(1)=1f(2)=1f(n)=f(n-1)+f(n-2) (n>=3)现在我们根据这个规则定义另一种数列,命名为“辛波那契数列”,它是这样定义的:s(x)=0 (xs(x)=1 (0s(x)=s(x-1)原创 2012-08-12 20:12:48 · 1824 阅读 · 1 评论 -
怪物过河问题
高一的时候,同学(老友)问过这个题,我现在还记得他当时的话语:“这道题,我们那边的一个大学生想了三天都没想出来,呵呵,让我解决了,厉害吧,哈哈。。。”。当时,我也是冲着他那句“大学生三天都没想出来”,才兴致勃勃地答应挑战的,可惜,当时终究是没想出来,最后,只好逼着他讲答案。当然,经历过大学的人都知道,其实大学生也就那样,大多很普通,无须过高的评价。题意大致如下:有6个怪物AaBbCc,AB原创 2012-08-12 21:10:25 · 1433 阅读 · 0 评论 -
不用+-*/%实现整数的+-*/%运算
可能计算机相关专业有教授过相关的知识,这里只是作为一个非计算机专业人员的实现方法,模仿十进制的相关运算方法加以实现:#include using std::cout;using std::endl;using std::ostream;struct divide_modulo_zero_exception{ static const char msg[64];原创 2012-08-10 18:29:27 · 923 阅读 · 0 评论 -
打印满足勾股定理的互素的整数a,b,c
#include using namespace std;int gcd(int a, int b){ return(0 == a ? b : gcd(b % a, a));}void pythagorean(int maxa){ for (int a = 1; a <= maxa; ++a) { int a2 = a原创 2012-07-24 21:56:36 · 2349 阅读 · 0 评论 -
银江股份面试
昨天上午银江股份面试,坦白地说,笔试题做的很不好,看到倒数第二题就有不想做的感觉:因为这是《算法导论》的最大公共字串问题,没记错的话,要用到动态规划,运筹学的知识,难!所以,我给自己下了结论:在规定的时间内(接待人员给的是50分钟),我极可能做不出来,加上前面的SQL,文字题什么的根本不会,我估摸又没戏,所以,提前交卷了,不过面试官珊珊来迟,我在这个空档也没事,也就又写了下,正起身去取回答题卷,面原创 2012-06-06 09:38:52 · 6457 阅读 · 0 评论 -
恒生电子笔试题:LoopMove
循环移动字符串:比如 "abcdefghi" 移动2就变成 "hiabcdefg"当时实现:void LoopMove(char * str, unsigned int nsteps){ assert(NULL != str); int len = strlen(str); nsteps %= len; while (nsteps > 0) {原创 2012-05-03 22:33:50 · 3495 阅读 · 2 评论 -
试题: 小白鼠问题
刚看到这个帖子:C++编程,小白鼠问题,开始没有什么思路,刚躺下,想到了。。。原题:有一家生化所,一月份引入一对新生的小白鼠。这对小白鼠生长两个月后,在第三、第四、第五个月各繁殖一对新小白鼠,在第六个月停止繁殖,在第七个月则死亡。新生的小白鼠也如此繁殖。问在第N个月时,活的小白鼠有多少对?思路:第N个月的对数 就是 第N-1月时 1-5个月(当时的1-5)的对数 加上 下一个月原创 2012-04-19 03:08:24 · 2447 阅读 · 0 评论 -
求从0到n这n+1个整数的十进制表示中出现m的次数, 其中(9>=m>=0)
网上看到一道题:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数‘ 这里修改下题目:求从0到n这n+1个整数的十进制表示中出现m的次数, 其中(9>=m>=0)例如n为12、m为1:从0到12这些整数中包含1的数字有1、10、11和12,一共有5个1 代码如下:#include /**********************************原创 2013-04-09 00:08:14 · 1523 阅读 · 0 评论 -
Enhanced Assertions一文笔记
译文:http://blog.youkuaiyun.com/pongba/article/details/19129原创 2014-04-08 21:41:29 · 796 阅读 · 0 评论 -
试题:Triangle
无意中看到别人博客上的这个题目题目原型:Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent numbers on the row below.For example, given the following triangl原创 2014-04-03 20:18:35 · 910 阅读 · 0 评论 -
试题: 打印格雷码
好久没做算法题了,来一个 格雷码 - 概念(百度百科):在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code),另外由于最大数与最小数之间也仅一位数不同,即“首尾相连”,因此又称循环码或反射码。在数字系统中,常要求代码按一定顺序变化。例如,按自然数递增计数,若采用8421码,则数0111变到1000时四位均要变化,而在实际电路中,4位的变原创 2013-10-04 22:05:52 · 1508 阅读 · 0 评论 -
两个升序数组的中位数
一般情形的解法:#include double median(int arr[], int size){ if (1 == size % 2) { return(arr[size / 2]); } else { return((arr[size / 2 - 1] + arr[size / 2]) / 2.0);原创 2013-05-08 16:00:16 · 1157 阅读 · 0 评论 -
求升序数组中绝对值最小的元素
题目来源:http://blog.youkuaiyun.com/linygood/article/details/8898691自己写了下:#include #include int min_abs(int * arr, int size){ if (arr[0] >= 0) { return(arr[0]); } if (原创 2013-05-10 13:42:50 · 998 阅读 · 0 评论 -
base64字符转码
项目里的实现是直接调用openssl里面的函数,感觉不好,想改,但是很多人都在用那些接口了,所以,不方便改动项目里的接口与实现。 下面是自己的实现,还是下了些心思才有这份实现的 #include #include #define BASE64_ENCODE_SIZE(input_len) ((input_len + 2) / 3 * 4 + 1)#define原创 2013-02-17 23:46:51 · 881 阅读 · 0 评论 -
最常考的笔试题: MyString实现
题目:实现下面接口class MyString{public: MyString(const char * data = NULL); MyString(const MyString & other); MyString & operator = (const MyString & rhs); ~MyString();private:原创 2013-04-28 08:56:58 · 1010 阅读 · 0 评论 -
包围的区域
问题来源: http://www.blogjava.net/sandy/archive/2013/04/15/397875.html问题: 给定一个2D的棋盘, 含有'X'和'O', 找到所有被'X'包围的'O', 然后把该区域的'O'都变成'X'#include #include enum FLAG{ X = 'X', O = 'O' };原创 2013-04-25 18:30:13 · 866 阅读 · 0 评论 -
求整数n的二进制表达式中1的个数
题目看过不少次,写起来也不难,最近才发现还有很多我以前没有想到的优雅方案关于这个的解法,http://wenku.baidu.com/view/81dfec47be1e650e52ea99e0.html 中还有很多,不少看不懂,下面是我看得懂而且比较喜欢的:#include unsigned int get_count_1(unsigned int x){ unsig原创 2013-04-23 20:02:44 · 1111 阅读 · 0 评论 -
把输入整数拆分为连续的正整数之和
题目描述:一个正整数有可能可以被表示为 n(n>=2) 个连续正整数之和,如: 15=1+2+3+4+5 15=4+5+6 15=7+8 请编写程序,根据输入的任何一个正整数,找出符合这种要求的所有连续正整数序列。(2005年百度之星第一题)#include using namespace std;void display( int num, int min, int max)原创 2012-05-23 15:21:30 · 2376 阅读 · 0 评论 -
试题:打印n位水仙花数
水仙花数指的是一个n位数(n≥3), 它的每个位上的数字的n次幂之和等于它本身.(例如:1^3 + 5^3 + 3^3 = 153) , 理论上, 最大的水仙花数不超过34位题目还是从 luciferisnotsatan 博客上看到的, 他的实现见:n位水仙花数由于C++中整数的取值范围受限, 所以下面的代码最大只能计算到n = 19的情形下面是我的实现代码:#include原创 2012-02-17 13:30:45 · 1366 阅读 · 0 评论 -
试题:网易笔试的一道题目
写一个程序,打印出以下的序列。(a),(b),(c),(d),(e)........(z)(a,b),(a,c),(a,d),(a,e)......(a,z),(b,c),(b,d).....(b,z),(c,d).....(y,z)(a,b,c),(a,b,d)....(a,b,z),(a,c,d)....(x,y,z)....(a,b,c,d,.....x,y,z)这道原创 2012-02-16 15:21:42 · 949 阅读 · 0 评论 -
试题:输入n, 得到以n为边长的正方形网格, 奇数圈为A, 偶数圈为B
刚在论坛碰到这个题, 记下当时的解法#include using namespace std;void show(unsigned int n){ const char first = (((n + 1) % 4) > 1 ? 'A' : 'B'); const char second = ('A' == first ? 'B' : 'A');原创 2011-12-30 13:04:17 · 794 阅读 · 0 评论 -
试题:复数类
#include using namespace std;class Complex{public : Complex(double real = 0.0, double img = 0.0); Complex(const Complex & other); friend ostream & operator << (ostream & os, const Co原创 2012-02-14 12:35:41 · 609 阅读 · 0 评论 -
试题:实现堆
堆的实现:#include #include using namespace std;template void __push__heap(RandomAccessIterator start, RandomAccessIterator end, T *, CompareFunc comp){ if (end - start =原创 2012-02-13 18:15:26 · 482 阅读 · 0 评论 -
试题:求1000000以内的素数
之前无聊时, 写的找素数的代码, 记得当年考二级C时, 有这么一道上机题, 那时候求稳, 效率肯定不高, 所以今天用了排除法来做先给出总的测试代码:#include #include #include using namespace std;#define MAX_DATA 1000000int size;int data[MAX_DATA / 2 + 1]原创 2012-02-01 18:18:54 · 3151 阅读 · 2 评论 -
试题:将罗马数字转为阿拉伯数字
#include #include #include #include #include #include #include using namespace std;void Arabic2Roman(int arabic, list & roman){ ......}struct Exception{};int A原创 2012-02-01 18:01:30 · 932 阅读 · 0 评论 -
试题:实现一个不能被继承的类(续之下)
分析: 代码之所以不能通过编译是因为A中的typedef晚于FinalMaker中对A::RawType的引用, 所以我们要有方法更早的引用到A::RawType, 所以我让A又继承了Template, 并把typedef写在Template中, 这样A就会继承下这个typedef, 又考虑到构造函数的继承顺序, 所以Template应被先继承, 且应该被virtual的方式继承:template原创 2012-01-04 19:49:20 · 655 阅读 · 1 评论 -
试题:全排列
#include using namespace std;#define NUM_COUNT 6int count; // 全排列个数int num[NUM_COUNT]; // 给定全排列数据void swap(int & a, int & b){ if (a != b) { a ^= b;原创 2011-12-30 18:16:54 · 786 阅读 · 0 评论 -
试题:组合
#include using namespace std;#define NUM_COUNT 6int size; // data数组中记录元素个数int count; // 组合个数int num[NUM_COUNT]; // 给定组合数据int data[NUM_COUNT]; // 参与组合元素voi原创 2011-12-30 18:13:55 · 676 阅读 · 0 评论 -
试题:将阿拉伯数字转为罗马数字
在罗马数字中, 利用7个不同字母进行重复或者组合来表达各式各样的数字.I = 1 V = 5 X = 10 L = 50 C = 100 D = 500 M = 1000下面是关于构造罗马数字的一些通用的规则的介绍:1> 字符是叠加的. I表示1, II表示2, 而III表示3. VI表示6(字面上为逐字符相加, "5加1"), VII表示7, VIII表示8原创 2012-01-31 18:38:17 · 1794 阅读 · 0 评论 -
试题:两个基类有同名的虚函数要实现, 怎么办?
先把问题陈述一下:有两个类A, B, 它们可能是别人实现的(或是别人提供的库中的类), 很复杂且已经在用, 你不能修改他们, 你想写一个类C同时具有这两个类的特性, 因为自己实现它代价实在是太大, 所以你想到用C继承A, B以达到效果, 但是有一个问题, A, B具有一个同名的虚函数, 你在C中怎么重新实现这个虚函数呢? 先看下面的代码:#include #include usin原创 2012-01-06 11:35:38 · 3466 阅读 · 3 评论 -
试题:找出数组中元素和为指定值的所有组合
本问题来自论坛, 题意大概如下:指定一个数组, 和一个数值, 找出数组中元素和为这个指定数值的所有组合如指定数组元素为[1, 2, 3], 而指定数值为6, 则满足要求的组合为:{1, 2}, {3}#include using namespace std;void solve(int n, int data[], int start, int end,原创 2011-12-30 18:28:31 · 6129 阅读 · 2 评论 -
试题:实现一个不能被继承的类(上)
其实我们根本没法写出满足字面要求的代码, 其实我们要实现的是:写一个类, 使继承这个类的子类不能实例化对象(不论栈上还是堆上) 看了点书的人都会想到这个办法: 将自己的类的析构函数(或所有构造函数+拷贝构造函数)声明为private, 这样继承它的子类就不能实例化对象了这个方法有一个缺点: 我们只能通过下面的方式创建对象了1.在static成员函数(也可以是友元函数)中返回一个局部原创 2011-12-31 19:16:47 · 956 阅读 · 2 评论 -
试题:如何利用一个6面概率均匀的骰子把一个苹果公平地交给七个孩子中的某一个(下)
在没看8楼前, 我也想了个方案:取七个骰子, 第一个骰子标号1-6, 第二个7-12, ..., 第六个标号31-36, 第七个标号37-42, 一起扔, 就会得到(1, 42)中的七个值, 这42个值对7取余后加1的结果有7种情况1-7, 且取[1, 7]都有5种情况, 也就是说, 这七个骰子一起扔后, 得到的点数对7取余加1后理论上应该均匀的得到[1, 7], 下面考虑这些经过计算处理的值原创 2012-02-12 18:59:59 · 1747 阅读 · 0 评论 -
试题:如何利用一个6面概率均匀的骰子把一个苹果公平地交给七个孩子中的某一个(上)
写作该文的目的是出于对帖子: 一个骰子有6面, 概率均匀, 我如何选择7件事? 有些疑问和想法帖子中对8楼的方案呼声最高:8楼的方案如下:用一个骰子扔一次得到x, 再仍一次得到y, 如果x, y都为6就不算, 重来该方案原理是利用表达式(6x-6+y)可以得到[1, 36], 再去除x, y都为6的情形, 得到[1, 35], 这35个数字对7取余后再加1, 就会得到5个1,原创 2012-02-12 18:38:52 · 1519 阅读 · 0 评论 -
试题:用123456789和+-*/组合出100
#include using namespace std;struct MyException{};double Plus(double first, double second){ return (first + second);}double Minus(double first, double second){ retu原创 2012-02-10 18:47:34 · 2267 阅读 · 0 评论 -
试题:集合的划分问题
输入集合{ 1, 2, 3 }输出结果:{ {1}, {2}, {3} }{ {1}, {2, 3} }{ {1, 3}, {2} }{ {1, 2, 3} }试编写相应算法:#include #include #include #include using namespace std;template void set(const vect原创 2012-02-08 18:48:44 · 926 阅读 · 0 评论 -
试题:组合的模板非递归实现
#include #include #include using namespace std;template void show(const vector & element, const vector & index){ assert(index.size() > 0); assert(element.size() >= index.size()原创 2012-02-08 12:33:40 · 590 阅读 · 0 评论