笔试试题精选
good-destiny
这个作者很懒,什么都没留下…
展开
-
一、计算二进制中1的个数
1、计算二进制中1的个数int BitCount2(unsigned int n){ unsigned int c =0 ; while(n!=0) { n &= (n -1) ; // 清除最低位的1 c++; } return c ;}原创 2016-11-04 21:57:36 · 386 阅读 · 0 评论 -
背包问题
首先,我们知道01背包的状态转换方程:f[i,j] = Max{ f[i-1,j-Wi]+Pi( j >= Wi ), f[i-1,j] }f[i,j]表示在前i件物品中选择若干件放在承重为 j 的背包中,可以取得的最大价值。Pi表示第i件物品的价值。决策:为了背包中物品总价值最大化,第 i件物品应该放入背包中吗 ?题目描述:有编号分别为a,b,c,d,e的五件物原创 2017-03-10 21:37:06 · 294 阅读 · 0 评论 -
根据第xx天推算日期
题目描述给出年分m和一年中的第n天,算出第n天是几月几号。 输入描述:输入包括两个整数y(1输出描述:可能有多组测试数据,对于每组数据,按 yyyy-mm-dd的格式将输入中对应的日期打印出来。输入例子:2000 32000 312000 402000 602000 612001 60输出例子:2000-01-032000-0原创 2017-01-31 21:21:27 · 1415 阅读 · 0 评论 -
数据交换swap
一、快速交换a,b的值#include<stdio.h>#include<stdlib.h>#define swap(a,b) ((&(a)!=&(b)))? ((a)^=(b)^=(a)^=(b)):((a)=(a))int main(void){ int a, b; scanf("%d%d",&a,&b); p...原创 2017-01-17 15:56:03 · 466 阅读 · 0 评论 -
最大公约数之辗转相除法
代码示例:int gcd(int m ,int n){ int temp; while(n) { temp=n; n=m%n; m=temp; } return m;}原创 2017-01-16 10:26:31 · 313 阅读 · 0 评论 -
二、十进制数字快速转换为16进制字符
”0123456789ABCDEF”是一个字符串字面量,类型是char[17](在C中)或者const char[17](在C++中),转换后的指针类型分别为char*和const char*,因此”0123456789ABCDEF”[0]就是第0个元素’0’。这个技巧常常用在进制转换中,以下代码将一个长整数的内存映像转换为16进制表示:char* convert( unsigned原创 2016-12-29 17:00:12 · 693 阅读 · 0 评论 -
合并两个链表
递归版本:/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* Merge(ListNode* pHead1, Lis转载 2017-09-14 22:03:26 · 267 阅读 · 0 评论 -
输入两个链表,找出它们的第一个公共结点
从链表的定义可以看出,这两个链表是单链表,如果两个链表有公共节点,那么这两个链表从某一节点开始,它们的m_pNext都指向同一个节点,之后它们所有的节点都是重合的,不可能再出现分叉。所以拓扑形状看起来是Y型。如下图所示: ListNode* FindFirstCommonNode( ListNode *pHead1, ListNode *pHead2) { ListNo原创 2017-09-14 20:34:05 · 416 阅读 · 0 评论 -
根据前序、中序构建二叉树
题目描述二叉树的前序、中序、后序遍历的定义: 前序遍历:对任一子树,先访问跟,然后遍历其左子树,最后遍历其右子树; 中序遍历:对任一子树,先遍历其左子树,然后访问根,最后遍历其右子树; 后序遍历:对任一子树,先遍历其左子树,然后遍历其右子树,最后访问根。 给定一棵二叉树的前序遍历和中序遍历,求其后序遍历(提示:给定前序遍历与中序遍历能够唯一确定后序遍历)。 输入描述:两个字符串,其原创 2017-02-01 17:43:23 · 1990 阅读 · 0 评论 -
八皇后问题(经典回溯算法)
算法提出:在国际象棋棋盘上(8*8)放置八个皇后,使得任意两个皇后之间不能在同一行,同一列,也不能位于同于对角线上。问共有多少种不同的方法,并且指出各种不同的放法。算法思路: 首先我们分析一下问题的解,我们每取出一个皇后,放入一行,共有八种不同的放法,然后再放第二个皇后,同样如果不考虑规则,还是有八种放法。于是我们可以用一个八叉树来描述这个过程。从根节点开始,树每增加一层原创 2017-03-12 12:45:55 · 723 阅读 · 0 评论 -
set关联容器
题目描述编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127)。不在范围内的不作统计。输入描述:输入N个字符,字符在ACSII码范围内。输出描述:输出范围在(0~127)字符的个数。输入例子:abc输出例子:3#include#includeusing namespace std;int m原创 2017-02-03 22:49:43 · 318 阅读 · 0 评论 -
map关联容器
题目描述数据表记录包含表索引和数值,请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。输入描述:先输入键值对的个数然后输入成对的index和value值,以空格隔开输出描述:输出合并后的键值对(多行)输入例子:40 10 21 23 4输出例子:0 31 23 4#incl原创 2017-02-03 21:44:48 · 307 阅读 · 0 评论 -
二叉排序树
题目描述输入一系列整数,建立二叉排序数,并进行前序,中序,后序遍历。 输入描述:输入第一行包括一个整数n(1<=n<=100)。接下来的一行包括n个整数。输出描述:可能有多组测试数据,对于每组数据,将题目所给数据建立一个二叉排序树,并对二叉排序树进行前序、中序和后序遍历。每种遍历结果输出一行。每行最后一个数据之后有一个空格。输入中可能有重复元素,但是输出的二叉树原创 2017-01-31 20:37:05 · 381 阅读 · 0 评论 -
最小年龄的三个职工
题目描述职工有职工号,姓名,年龄.输入n个职工的信息,找出3个年龄最小的职工打印出来。 输入描述:输入第一行包括1个整数N,1<=N<=30,代表输入数据的个数。接下来的N行有N个职工的信息:包括职工号(整数), 姓名(字符串,长度不超过10), 年龄(1输出描述:可能有多组测试数据,对于每组数据,输出结果行数为N和3的较小值,分别为年龄最小的职工的信息。关原创 2017-01-31 22:08:50 · 676 阅读 · 0 评论 -
剔除重复数据
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。 Input Param n原创 2017-02-03 18:57:27 · 569 阅读 · 0 评论