Cracking the coding interview
文章平均质量分 67
seagullyoyo
for the load your god is with you whereever you go
展开
-
Q9.6
#include #include using namespace std;struct node{ int x, y;};const int maxn = 255;int graph[maxn][maxn];bool visited[maxn][maxn];stack st;void search(int xl, int yl, int xh, int yh, in原创 2014-07-11 16:16:08 · 444 阅读 · 0 评论 -
Q13.5
题目原文:What is the significance of the keyword “volatile” in C?译文:谈谈C语言关键字"volatile"的意义(或重要性)?解答volatile的意思是"易变的",因为访问寄存器比访问内存要快得多, 所以编译器一般都会做减少存取内存的优化。volatile 这个关键字会提醒编译器转载 2014-07-24 17:02:09 · 477 阅读 · 0 评论 -
Q13.4深拷贝和浅拷贝的区别
题目原文:What is the difference between deep copy and shallow copy? Explain how you would use each.译文:深拷贝和浅拷贝的区别是什么?你会如何使用它们?转载 2014-07-24 16:33:42 · 522 阅读 · 0 评论 -
Q13.3 关于虚表指针、虚函数表、虚函数表中虚函数地址
第一个小白问题,why地址数组()原创 2014-07-24 14:48:40 · 548 阅读 · 0 评论 -
Q8.1
#include using namespace std;原创 2014-07-06 15:20:26 · 365 阅读 · 0 评论 -
Q13.7
题目原文:Why does a destructor in base class need to be declared virtual?译文:为什么基类中的析构函数要声明为虚析构函数?解答用对象指针来调用一个函数,有以下两种情况:如果是虚函数,会调用派生类中的版本。如果是非虚函数,会调用指针所指类型的实现版本。析构函转载 2014-07-24 17:17:18 · 478 阅读 · 0 评论 -
Q13.6 C++名字隐藏
题目原文:What is name hiding in C++?译文C++中名字隐藏是什么?解答让我们通过一个例子来讲解C++中的名字隐藏。在C++中,如果一个类里有一个重载的方法, 你用另一个类去继承它并重写(覆盖)那个方法。你必须重写所有的重载方法, 否则未被重写的方法会因为名字相同而被隐藏,从而使它在派生类中不可见。转载 2014-07-24 17:08:23 · 437 阅读 · 0 评论 -
Q5.2
#include //#include #include #include using namespace std;stack st;queue q;const int maxn = 30;void print(string &s){ char ch[20]; strcpy(ch, s.c_str()); float n = atof(ch); int intege原创 2014-07-03 20:53:04 · 312 阅读 · 0 评论 -
Q6.6
问题:在过道上有100把上了锁的锁头。有一个人,第一次操作把这100把锁都打开了; 第二次操作,每隔1个锁他就把锁给锁上(即把编号2,4,6…100的锁锁上)。 第三次操作,每隔2个锁他就改变锁的状态,即如果原本是开着的,他就锁上; 原本是锁着的,他就给打开。(操作对象是编号为3,6,9…99的锁)。 当他做完第100次操作后(即只对编号为100的锁操作),打开着的锁有几把?分析:原创 2014-07-04 15:14:09 · 577 阅读 · 0 评论 -
Q6.5
题目:有一栋楼共100层,一个鸡蛋从第N层及以上的楼层落下来会摔破, 在第N层以下的楼层落下不会摔破。给你2个鸡蛋,设计方案找出N,并且保证在最坏情况下, 最小化鸡蛋下落的次数。分析:转载 2014-07-04 15:12:17 · 477 阅读 · 0 评论 -
Q6.4
这题据说很常见,也henyo原创 2014-07-04 14:33:52 · 531 阅读 · 0 评论 -
Q8.2
#include using namespace std;/* 第一问 int N;int pathNum = 0;void dfs(int x, int y){ if(x == N && y == N) { pathNum++; return; } if(x + 1 <= N) dfs(x + 1, y); if(y + 1 <= N) dfs(x,原创 2014-07-07 10:07:02 · 390 阅读 · 0 评论 -
Q8.4
#include #include using namespace std;vector permu(string a, int n){ vector resv; string ins; ins += a[n]; if(n == 0) { resv.push_back(ins); return resv; } vector lastres = permu(a, n原创 2014-07-08 11:28:43 · 376 阅读 · 0 评论 -
Q9.5
#include #include using namespace std;int search(string a[], int lhs, int rhs, string val){ string nil = " "; if(val == nil) return -1; while(lhs < rhs) { int mid = (lhs + rhs) >> 1; wh原创 2014-07-11 11:21:36 · 351 阅读 · 0 评论 -
Q9.4外排序
外排序原创 2014-07-11 10:45:17 · 472 阅读 · 0 评论 -
Q9.3
/*每次二分总会使至少半边有序,例如20 25 1 3 4 5| 6 7 8 9 10或者 18 20 | 25 1 2,每次我们只分析有序的那半边 */#include using namespace std;int search(int a[], int lhs, int rhs, int x){ while(lhs <= rhs) { int mid =(lhs + r原创 2014-07-10 22:11:37 · 338 阅读 · 0 评论 -
Q8.8
//8皇后问题 #include using namespace std;int c[10]; //c[i]对应第i行的棋子放在第几列 int num = 0;void print(){ for(int i = 0; i < 8; ++i) { for(int j = 0; j < 8; ++j) { if(j == c[i]) cout原创 2014-07-10 19:24:36 · 575 阅读 · 0 评论 -
Q9.1
#include using namespace std;//最naive的方法 void merge(int a[], int len1, int b[], int len2){ int i = 0, j = 0, k = 0; int *tmp = new int[len1 + len2]; while(i < len1 && j < len2) { tmp[k++] =原创 2014-07-10 21:20:18 · 392 阅读 · 0 评论 -
Q9.2
#include #include using namespace std;bool cmp(string a, string b){ sort(&a[0], &a[0] + a.length()); //关于sort的用法 sort(&b[0], &b[0] + b.length()); return a < b;}int main(void){ str原创 2014-07-10 21:19:28 · 341 阅读 · 0 评论 -
Q8.3
#include #include using namespace std;vector subset;vector > subsets;vector > getsub(int a[], int len) // from 00.. to 11..{ int m = 1 << len; int j, cnt; vector > vs; for(int i = 0原创 2014-07-07 19:19:15 · 367 阅读 · 0 评论 -
Q8.5
#include using namespace std;void print_pare(char a[], int l, int r, int cnt){ if(l < 0 || r < l) return; if(l == 0 && r == 0) { a[cnt] = '\0'; puts(a); cout << endl; return; } if(l >原创 2014-07-08 14:33:29 · 397 阅读 · 0 评论 -
Q8.7
//有点错误,下面附表达 #include using namespace std;const int m1 = 25, m2 = 10, m3 = 5, m4 = 1;const int num = 10;int total = 0;bool reached[num * 2];int pre[num * 2];void path(int n){ while(n > 0)原创 2014-07-08 17:12:05 · 477 阅读 · 0 评论 -
Q8.6
#include using namespace std;const int maxn = 255;struct color{ int r, g, b;};color graph[maxn][maxn];bool isPaint[maxn][maxn];int x1, y1, x2, y2;color clr;void init(){ memset(graph,原创 2014-07-08 15:10:25 · 369 阅读 · 0 评论 -
Q5.4
(n * (n - 1)) == 0 说明n的二进制数中只有一个1,qiyu原创 2014-07-04 09:52:11 · 319 阅读 · 0 评论 -
Q6.2
8*8的棋盘,原创 2014-07-04 14:11:20 · 351 阅读 · 0 评论 -
Q10.1
你有一个篮球架,可以在以下游戏中选择一个来玩。游戏1:投一次球,进了算赢。游戏2:投三次球,至少要进2个才算赢。如果命中率是p,那么p是什么值时你会选游戏1来玩?或p是什么值时你会选择游戏2?解答:原创 2014-07-17 13:19:56 · 366 阅读 · 0 评论 -
Q9.7
#include using namespace std;struct person{ int w, h;};const int maxn = 100;int d[maxn] = {0};bool cmp(person a, person b){ if(a.h == b.h) return a.w < b.w; return a.h < b.h;}int dp原创 2014-07-14 21:53:39 · 411 阅读 · 0 评论 -
Q10.2~Q10.
3只蚂蚁在三角形的3个顶点上,现在让它们沿着三角形的边开始运动, 发生碰撞的概率是多少?如果是n只蚂蚁在n边形的n个顶点上呢,碰撞的概率又是多少?原创 2014-07-17 13:26:48 · 626 阅读 · 0 评论 -
Q3.5
#include using namespace std;class stack{private: int* data; int cur; int capacity;public: stack(int cap = 100) { data = new int[cap]; cur = -1; capacity = cap; } ~stack() { del原创 2014-03-07 14:18:59 · 565 阅读 · 0 评论 -
Q4.3
#include using namespace std;typedef struct Node{ int data; struct Node* lchild; struct Node* rchild;}Node, *pNode;bool used[100];void minHeightTree(pNode head, int* src, int start, int en原创 2014-03-12 11:09:38 · 397 阅读 · 0 评论 -
Q4.1
#include using namespace std;int maxlen = 0;int minlen = 65535;bool isBalance(int maxl, int minl){ return (maxl - minl > 1);}int findMin(char* s, int len, int cur, int n){ if (s[cur] == '原创 2014-03-11 15:41:40 · 466 阅读 · 0 评论 -
Q3.1
#include using namespace std;#define STACKSIZE 100#define EMPTY 65535typedef struct Node{ int data; int prefix;}Node;int fix = -1;int pt1 = -1, pt2 = -1, pt3 = -1;void push(Node* S,原创 2014-03-05 13:46:45 · 574 阅读 · 0 评论 -
Q3.2
#include using namespace std;#define MAX 100typedef struct Node{ int data; int min;}Node, *pNode;int minimum = 65535;int index = -1;void push(Node* S, int data){ S[++index].data = data原创 2014-03-05 14:40:57 · 589 阅读 · 0 评论 -
Q2.5
#include using namespace std;typedef struct Node{ char data; struct Node* next;}Node, *pNode;pNode Init(char* a, int len){ int i; pNode head, p, q; head = new Node(); head->data = a[0];原创 2014-03-04 20:46:56 · 670 阅读 · 0 评论 -
Q2.4
#include using namespace std;typedef struct Node{ int data; struct Node* next;}Node, *pNode;pNode Init(int* a, int len){ int i; pNode head, p, q; head = new Node(); head->data = a[0]; q原创 2014-03-04 20:17:18 · 446 阅读 · 0 评论 -
Q10.7
#include #include #include using namespace std;int findkth(int k){ if (k == 1) return 0; if(k == 2) return 3; if(k == 3) return 5; if(k == 4) return 7; queue a, b, c; a.push(3); a.原创 2014-07-21 11:10:27 · 413 阅读 · 0 评论 -
Q4.2
#include using namespace std;int num, m, n;int reachable[101][101];bool beenTo[101][101];bool isReachable(int m[101][101], int src, int des){ int i; for (i = 0; i < num; ++i) { if (m[src原创 2014-03-11 16:49:51 · 558 阅读 · 0 评论 -
Q5.7
#include #include using namespace std;int fetch(int a[], int i, int j){ return (a[i] >> j) & 1; //return 0/1}int get(int a[], int i){ int ret = 0; for(int j=31; j>=0; --j) r原创 2014-07-04 13:03:54 · 359 阅读 · 0 评论 -
Q5.6
#include using namespace std;void print_binary(int x){ string s = ""; for(int i=0; i>= 1){ if(x&1) s = "1" + s; else s = "0" + s; } cout<<s<<endl;}int bit_swap(in原创 2014-07-04 11:35:06 · 527 阅读 · 0 评论 -
Q13.1
#include #include using namespace std;int getLastKLine(ifstream & fin, int k){ string line, lastK[k + 1]; int fix = 0; while(getline(fin, line)) { lastK[fix++ % k] = line; } for(int i原创 2014-07-23 17:27:59 · 435 阅读 · 0 评论