- 博客(221)
- 收藏
- 关注
原创 【寻找临界楼层】面试难题
问题1 :题目:一种石头,在某一高度扔下就会碎,在这个高度以下不会碎,高度以上一定碎。现在有4个石头,1000层的楼房,需要测定这个石头破碎的高度。求最少多少次一定可以测出来。问题2 :题目:一个100层的大厦,你手中有两个相同的鸡蛋(玻璃球或围棋)。从这个大厦的某一层扔下鸡蛋((玻璃球或围棋))就会碎,用你手中的这两个鸡蛋(玻璃球或围棋),找出一个最优的策略,来得知那个临界层面。
2012-10-04 20:18:21 1825
原创 【操作系统篇】文件系统
文件系统的两个目标:地址独立(通过文件或文件夹实现)、地址保护(访问控制)。1. 主动控制:文件能被那些用户RWX访问。访问控制表(ACL)(存放在内核空间,有OS进行设置和访问,用户不能直接修改ACL)2. 能力表:用户拥有钥匙。存放用户能够访问哪些文件。如果ACL或能力表非常大,那么执行访问控制的时间成本将增大,需要优化所需要的时间,这个手段就是保护域。保护域就是将访问
2012-09-19 20:23:39 794
原创 SOJ-1950(cards)
【题目描述】一堆牌n张,每次可以去走1,2,3张,有多少种取法【解题思路】x[0] = 1;x[1] = 1;x[2] = 2;x[i] = x[i - 1] + x[i - 2] + x[i - 3]
2012-08-20 09:59:39 291
原创 【ZeroC-ICE】多语言通信
Slice的全称:Specification Language for Ice,是Ice自己的特殊语言,一种用于使对象接口与其实现相分离的基础性抽象机制。Slice 建立在客户与服务器之间的合约,用以描述应用所使用的类型和对象接口。Slice描述独立于实现语言,所以客户实现语言是否与编写服务器所用的语言相同没有任何关系。因为Slice主要对接口和类型的定义和描述,没有实现部分。C++的服务端,
2012-08-02 14:09:08 1166
原创 【SOJ-1865整数划分】优化
#define N 501ll d[N][N];ll q(ll n, ll m){ if ((n < 1) || (m < 1)) return 0; if (n == 1 || m == 1) return 1; if (n < m) return q(n, n); if (n == m) return q(n, m - 1) + 1; return
2012-08-02 10:40:52 838
原创 【SOJ-2680】dollars变形
求一个数能被平方数组合的种数int main(){ ll i, j; ll d[1000]; for (i = 1; i < 200; ++i) { if (i * i <= 1000) { d[i] = i * i; } else { break; } } ll ans[1005] = {0}; ans[0] = 1; for (i = 1; i <
2012-08-01 17:36:03 620
原创 【SOJ-2652,2307-KMP】计算模式串在源串中的出现次数
源代码如下:char T[1000005];char P[10005];int next[10005];void Get_Next(char *P){ int TLength = strlen(P); next[0] = -1; int i = 0, j = -1; while (i < TLength) { if (j == -1 || P[i
2012-08-01 16:44:02 602
原创 【Boost.Asio学习笔记】C/S通信简例
一、同步:定时器中执行一个阻塞等待#include #include #includeint main(){ boost::asio::io_service io; boost::asio::deadline_timer t(io,boost::posix_time::seconds(5)); t.wait(); std::cout << "Hello, world!\n";
2012-08-01 15:41:58 2323
原创 【Boost.Asio学习笔记】C/S通信简例
客户端向服务器端发送请求,服务器生成当前时间的字符串并返回给客户端,客户端输出这个时间字符串Client客户端:#include #include using boost::asio::ip::tcp;int main(int argc, char* argv[]){ try { if (argc != 2) { std::cerr " << std::endl;
2012-08-01 14:04:02 1877
原创 【Boost.Asio学习笔记】简介+简单例子
一、异步定时器的使用#include #include #include boost::asio::io_service io;boost::asio::deadline_timer t(io, boost::posix_time::seconds(5));boost::asio::deadline_timer t1(io, boost::posix_time::seconds(
2012-07-31 17:37:22 1230
原创 SOJ-3330(bfs)
1 1 1 01 1 0 00 0 0 0求所有0到1的最短距离struct my{ int x, y, z;} wo;int d[1001][1001];int tag[1001][1001];int main(){ int cases, a, b; scanf("%d", &cases); while (cases--) { scanf("%d%
2012-07-10 17:27:24 876
原创 SOJ-3450(一个数的约数有哪些,需要列举)
【解析】分成两段int main(){ int n; while (scanf("%d", &n) == 1) { int i, end = sqrt(n * 1.0) + 1; int ans[10005], index = 0; int flag = -1; for (i = 1; i <= end; ++i) { if (n % i == 0) { p
2012-07-10 17:02:25 633
原创 面试整理
int i = 1;int main(){ int i = i; return 0;}//能通过编译,但i是未定义的值下水道井盖为什么是圆的展示一段自己觉得写过的最好的程序数组在哪里分配空间(堆or栈)
2012-07-09 11:22:34 1551
原创 Xmart Imaging【笔试】
1. 求sizeof#include #include union my{ int x; int y[5]; char z;};struct you{ int a; union my b; double c;};int main(){ printf("%d %d
2012-07-05 13:21:45 789
原创 Linux内核设计的艺术(第一章,从开机加电到执行main函数之前的过程)
一、启动BIOS,准备实模式下的中断向量表和中断服务程序【实模式】一个20位的存储器地址空间(1M),可以直接通过软件的方式访问BIOS以及周边硬件,没有硬件支持的分页机制和实时多任务的概念,CPU的开机状态都是实模式。1 在RAM中什么程序也没有的时候,BIOS来完成加载软盘中操作系统的任务。2 【BIOS的启动原理】BIOS程序由硬件执行,CPU的硬件都设计为加电即进入16位实模式
2012-06-14 19:04:14 1236 1
原创 Linux内核设计的艺术(第一章,从开机加电到执行main函数之前的过程)
【实模式】一个20位的存储器地址空间(1M),可以直接通过软件的方式访问BIOS以及周边硬件,没有硬件支持的分页机制和实时多任务的概念,CPU的开机状态都是实模式。1 在RAM中什么程序也没有的时候,BIOS来完成加载软盘中操作系统的任务。2 【BIOS的启动原理】BIOS程序由硬件执行,CPU的硬件都设计为加电即进入16位实模式状态运行,同时,将CPU的硬件逻辑设计为加电瞬间强行将CS置
2012-06-14 10:15:42 149
原创 POJ-1419(Graph Coloring)
【题目意思】把给定图涂颜色,问黑色点的最大个数补图的最大独立团,可以用dfs做int m[101][101];int color[101];int ans[101];int a, b, maxn, black;void process(){ int i; if (black > maxn) { maxn = black; for (i = 1; i <= a; +
2012-06-13 10:55:11 726
原创 【*】POJ-3580(伸展树-slpay tree)
伸展树的优势:由于Splay Tree仅仅是不断调整,并没有引入额外的标记,因而树结构与标准BST没有任何不同,从空间角度来看,它比Treap、Red-Black Tree、AVL要高效得多。因为结构不变,因此只要是通过左旋和右旋进行的操作对Splay Tree性质都没有丝毫影响,因而它也提供了BST中最丰富的功能,包括快速的拆分和合并(这里指的是将原树拆分成两棵子树,其中一棵子树所有节点都比
2012-06-05 16:34:49 1782 1
原创 C/C++学习精华
1 strcpy函数的标准写法:/*==========================================================*\| 笔试题strcpy写法| 返回char *的原因:| 返回strDest的原始值使函数能够支持链式表达式,| 增加了函数的“附加值”。同样功能的函数,| 如果能合理地提高的可用性
2012-06-05 14:51:25 628
原创 哈希表模版(链地址表示法)
#define NODE_NUMBER 10000001#define MOD 7struct hash{ int key; struct hash * next; hash() { next = NULL; }} * ht[NODE_NUMBER];int hash_insert(int k){ int key = k % MOD; if (ht[key] == NULL)
2012-06-05 13:31:50 521
原创 SOJ-1748(求约数个数)
int i, j; for (i = 1; i <= 1000; ++i) { d[i * i]++; for (j = i + 1; j * i <= 1000000; ++j) d[i * j] += 2; }
2012-06-04 11:55:41 499
原创 Shell脚本学习指南(读书笔记)
1 cat > filewho | wc -lctl + dchmod +x file./file最简单的脚本了。2 first=aaa second=bbb 当行可进行多个赋值fullname=“aaa bbb” 值中有空格要用引号full=“$first $second” 将几个变量连接起来要用引号3 echo -n不输出换行符,只用于
2012-05-31 19:55:23 563
原创 Shell脚本学习指南(读书笔记)
1 cat > filewho | wc -lctl + dchmod +x file./file最简单的脚本了。2 first=aaa second=bbb 当行可进行多个赋值fullname=“aaa bbb” 值中有空格要用引号full=“$first $second” 将几个变量连接起来要用引号3 echo -n不输出换行符,只用于
2012-05-31 18:36:00 110
原创 深入理解计算机系统(网络编程)
#include #include #include #include #include #include typedef struct sockaddr SA;int open_clientfd(char * hostname, int port){ int clientfd; struct hostent * hp; struct sockaddr_in servera
2012-05-31 17:58:33 773
原创 2012百度之星资格赛(H题:用户请求中的品牌)(字符串处理)
时间限制: 1000ms 内存限制: 65536kB 描述 馅饼同学是一个在百度工作,做用户请求(query)分析的同学,他在用户请求中经常会遇到一些很奇葩的词汇。在比方说“johnsonjohnson”、“duckduck”,这些词汇虽然看起来是一些词汇的单纯重复,但是往往都是一些特殊品牌的词汇,不能被拆分开。为了侦测出这种词的存在,你今天需要完成我给出的这个任务——“找出用户请求中循环
2012-05-29 17:00:47 919
原创 进程通信(管道)
1. 管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道; 2. 只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程);3. 单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独构成一种文件系统,并且只存在与内存中;4. 数据的读出和写入:一个进程向管道中写的内容被管道另一端的进程读
2012-05-23 10:51:01 587
原创 2011百度之星初赛A-图标排列
【题目描述】百度应用平台上有很多有趣的应用,每个应用都由一个开发者开发,每个开发者可能开发一个或多个应用。百度的工程师们想把应用尽可能好的推荐给用户。研究发现,同一个开发者开发的程序的图标有很大的相似性。如果把同一个开发者开发的应用放在一起,用户很快就会厌倦相似的图标,如果把这些图标穿插摆放效果就会好很多。现在工程师想给用户推荐来自m个开发者的n个应用,在推荐的时候这些应用的图
2012-05-22 16:26:36 194
原创 POJ-2243(bfs)(Knight Moves )
struct my{ int x, y;} wo[100];int main(){ char s[20]; while (gets(s)) { int d[10][10] = {0}; int g[10][10] = {0}; int i, j; for (i = 1; i <= 8; ++i) for (j = 1; j <= 8; ++j) d[i]
2012-05-22 12:22:00 495
转载 多线程编程实例(C预言实现)(转自百度百科)
#include #include #include #include #include #define MAX 10pthread_t thread[2];pthread_mutex_t mut;int number = 0, i; void * thread1(void * x){ printf ("thread1 : I'm thread 1\n"); for (i
2012-05-22 09:49:06 754
原创 SOJ-3963(暴力可以,但是stl很强大)
【题目描述】简单字符串处理【解题思路】暴力可以解决,但是需要高效的方法,不然会超时stl确实是个好东西啊int main(){ int tt, i, j; int a, b; char s[1005]; while (cin>>tt) { while (tt--) { scanf("%d%d%s", &a
2012-05-18 10:40:17 644
原创 【鸟哥的私房菜摘录】SHELL脚本编程
bash相关环境配置文件在~/.bashrc标准模板范例如下:#!/bin/bash# Program:# This program shows "Hello World!" in your screen.# History:# 2012.05.15 famousDT First release# main environment declarePATH=/u
2012-05-15 09:10:09 939
原创 POJ-3844(余数相同)()
【题目描述】给一组序列和除数d,求连续子序列的和能整除d的个数。int f[1000005];int main (){ int t; scanf("%d", &t); while (t--) { memset(f, 0, sizeof(f)); int d, n; scanf("%d%d", &d, &n); int sum[50005] = {0}, ans
2012-05-13 13:51:33 593
转载 【*】POJ-3899(数论很难)(Lucky Numbers——统计)
转载自:http://hi.baidu.com/billdu/item/c6dda7310196a9f6a8842830代码如下:char A[50], B[50];/* 求[1, upper]中后last_length位是last的Lucky Number总数 */ll stat_n(char *upper, char* last, int last_length){ ll re
2012-05-13 11:18:26 877
原创 SOJ-2687(博弈)(草稿纸2)
/*==========================================================*\| 第一次windy如果取后,让fgj取x,windy都能取b+c-x就能赢\*==========================================================*/int main(){ ll a, b, c; while (
2012-05-10 17:09:35 523
原创 百度实习笔试题(6-8题)(2012.05.06)
6.有一种结构如下图所示,它由层的嵌套组成,一个父层中只能包含垂直方向上或者是水平方向上并列的层,例如,层1可以包含2、3、4三个垂直方向上的层,层2可以包含5和6两个水平方向的层,在空层中可以包含数据节点,所谓的空层是指不包含子层的层,每个空层可以包含若干个数据节点,也可以一个都不包含。在这种结构上面,我们从垂直方向上划一条线,我们约定每一个子层中我们只能经过一个数据节点,在这种情况下,每条线可
2012-05-09 14:04:04 712
原创 百度实习笔试题解析(3-5题)(2012.05.06)
3.c与c++分别是怎样动态分配和释放内存的,有什么区别?c是malloc和free,c++是new和delete,区别如下:(1)new、delete 是操作符,可以重载,只能在C++中使用。(2)malloc、free是函数,可以覆盖,C、C++中都可以使用。(3)new 可以调用对象的构造函数,对应的delete调用相应的析构函数。(4)malloc仅仅分配内存,free
2012-05-09 13:41:03 598
原创 百度实习笔试题解析(第二题)(2012.05.06)
2.线程和进程有什么区别,“线程安全”怎么理解?【区别】(1)简而言之,一个程序至少有一个进程,一个进程至少有一个线程。(2)线程是处理器调度的基本单位,但进程不是。(3)线程的划分尺度小于进程,使得多线程程序的并发性高。(4)另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。(5)进程和线程的主要差别在于它们是不同的操作系统资源
2012-05-09 13:04:04 1562
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人