迅雷2010校园招聘深圳大学第二次笔试答案
来源:互联网 发布:linux grep 竖线 编辑:程序博客网 时间:2024/04/29 19:11
一. 有一副牌编号0~51,请把这副牌尽可能随机的发到4个人手里 a,b,c,d分别是13个元素的1维数组 程序: #include <stdio.h> int card[52]; // 随机生成 [l, r) 之间的整数 void swap(int &x, int &y) arr[0] = a; arr[1] = b; srand(time(NULL)); void print(int arr[], int size) int main() deal(a, b, c, d); print(card, 52); return 0; 二. 实现字符串反转的c库函数 char* strrev(char* string) 程序: #include <stdio.h> char* find_end(char *string) while (string < end) return res; int main() char string[] = "Hello, World!"; char *res = strrev(string); printf("%s/n", res); return 0; 三. 有10亿个数,这些数的值都在0~1000万之内。实现接口 get_bigger_count( unsigned value ) 程序: #include <stdio.h> const int MAX_N = 100; // 测试用 class order_calculate memset(m_pCnt, 0, sizeof(m_pCnt)); // i <= j < MAX_VAL}; unsigned int get_bigger_count(unsigned value) // 大于 value 的数的个数为 m_pCnt[value + 1]; return m_pCnt[value + 1]; private : int main() return 0;
注1:已经有rand()函数可以调用,但是rand()函数开销较大,请尽量少调用
函数原型 void deal( int[] a, int[] b, int[] c, int[] d );
#include <stdlib.h>
#include <time.h>
// 当 r > RAND_MAX 时应返回: l + (RAND_MAX * rand() + rand()) % (r - l);
int rand_range(int l, int r)
{
return (l + rand() % (r - l));
}
{
int t = x;
x = y;
y = t;
}
void deal(int a[], int b[], int c[], int d[])
{
int *arr[4];
arr[2] = c; arr[3] = d;
int i;
for (i = 0; i < 52; ++i)
card[i] = i;
// 随机洗牌
for (i = 0; i < 52; ++i)
{
swap(card[i], card[rand_range(i, 52)]);
}
// 发牌
for (i = 0; i < 13; ++i)
{
for (int j = 0; j < 4; ++j)
arr[j][i] = card[i * 4 + j];
}
}
{
for (int i = 0; i < size; ++i)
printf("%d ", arr[i]);
printf("/n**********/n");
}
{
int a[13], b[13], c[13], d[13];
print(a, 13);
print(b, 13);
print(c, 13);
print(d, 13);
}
注1:不可利用其他库函数,算法尽量高效、占用空间少。
{
for (; *string != '/0'; ++string);
return string;
}
char* strrev(char *string)
{
char *end = find_end(string);
char *res = string;
{
char c = *string;
*string++ = *--end;
*end = c;
}
}
{
}
输入一个值value,返回这10亿个数中比value值大的数的数目。
class order_calculate
{
public:
order_calculate();
~order_calculate();
unsinged get_bigger_count( unsigned value )
}
注1:get_bigger_count接口会被频繁的调用,实现要高效
注2:可以自己往内部任意添加变量和接口
注3:有个现成的接口 unsigned get_value_by_index( int idx ) 可以调用,该接口返回指定索引的value值
比如 get_value_by_index( 100 ), 返回10亿个数中第100个数的值。该接口开销较大,尽量少调用。
#include <string.h>
const int MAX_VAL = 1000;
unsigned arr[MAX_N];
unsigned get_value_by_index(int idx)
{
return arr[idx];
}
{
public :
order_calculate()
{
int i;
m_pCnt = new int[MAX_VAL + 1];
// 统计数值 val 出现的次数
for (i = 0; i < MAX_N; ++i)
{
++m_pCnt[get_value_by_index(i)];
}
// 不小于 i 的数的个数为: m_pCnt[i] = sigma{m_pCnt[j],
for (i = MAX_VAL - 1; i >= 0; --i)
m_pCnt[i] += m_pCnt[i + 1];
}
~order_calculate()
{
delete [] m_pCnt;
}
{
if (value < 0)
return m_pCnt[0];
else if (value >= MAX_VAL)
return 0;
}
int *m_pCnt;
};
{
}
- 迅雷2010校园招聘深圳大学第二次笔试答案
- 迅雷2010校园招聘吉林大学第二次笔试答案
- 迅雷2010校园招聘四川大学第二次笔试答案
- 迅雷2010校园招聘吉林大学第二次笔试题
- 迅雷2010校园招聘吉林大学第二次笔试题
- 迅雷2010校园招聘吉林大学第二次笔试题
- 2014迅雷校园招聘笔试题答案
- 2014迅雷校园招聘笔试题答案
- 2014迅雷校园招聘笔试题答案
- 2014迅雷校园招聘笔试题答案
- 2014迅雷校园招聘笔试题答案
- 2014迅雷校园招聘笔试题答案
- 2014迅雷校园招聘笔试题答案
- 迅雷2012校园招聘笔试题
- 迅雷2012校园招聘笔试题
- 迅雷2012校园招聘笔试题 .
- 2014迅雷校园招聘笔试题(C++)
- 迅雷2014校园招聘笔试题
- #pragma 指示符
- 迅雷2010校园招聘吉林大学第二次笔试答案
- 一个FLEX的datagrid相关的组件-MecGrid
- 仅通过崩溃地址找出源代码的出错行
- 我要做IT界的精英
- 迅雷2010校园招聘深圳大学第二次笔试答案
- 对比C++中sizeof与strlen函数的区别
- 介绍Flex UI测试工具:FlexMonkey
- 关于MD5算法
- VB+Access设计图书管理系统
- 迅雷2010校园招聘四川大学第二次笔试答案
- 一个程序员的博客开通了
- Blueprint:一个让你获取示例代码的Flash Builder扩展
- 析frmware的加载和init通过netlink处理uevent事件的一般流程