------------------------------------------
本文为本人原创,欢迎转载!
雪夜流星
------------------------------------------
n年没笔试了,9月16号迎来了笔试第一站,试卷分为两部分,第一部分是选择题,第二部分是综合题。选择题依稀记得有个arp的功能(把ip地址转换为mac地址),下面贴一下综合题。
1.找出一个序列中的最长递减子序列,如{9,4,3,2,5,4,3,2}的最长递减子序列为{9,5,4,3,2};代码实现如下:
- #include <stdlib.h>
- #include <stdio.h>
- #include <string.h>
- #define MAX_LEN 255
- /*****************************************************************************************
- *功能描述:找出一个序列中的最长递减子序列,如{9,4,3,2,5,4,3,2}的最长递减子序列为{9,5,4,3,2}
-
- *传入参数:str:源数组首地址, len:数组的长度
-
- *传出参数:str:递减子序列的数组首地址,传入参数和传出参数空间复用,降低空间复杂度
-
- *返回值: 递减子序列的数组首地址
-
- ****************************************************************************************/
- char *substring(char *str, int len)
- {
- char b[MAX_LEN] = {0};//定义数组长度必须为常量,不能为变量或者只读变量
- int i, j, k=0, tmp;
- if ((str == NULL)||(len <1))
- {
- return NULL;
- }
-
- for (i=0; i<len; i++)
- {
- tmp = str[i];
- for (j=i+1; j<len; j++)//遍历当前元素后面的所有元素,如果有比当前元素大的则退出循环
- {
- if (str[i] <= str[j])
- {
- break;
- }
- }
- if (j == len)//循环正常结束,即后面没有比当前数要大的,将其则放入新数组中
- {
- b[k] = tmp;
- k++;
- }
- }
- b[k] = '\0';//最后将新数组赋结束符
- strcpy(str, b);//将新数组元素拷贝到源数组中,复用空间
-
- return str;
- }
- int main(void)
- {
- char a[10] = "954325432";
- char *b;
- b = substring(a, 10);
- printf("b:%s\n", b);
- return 0;
- }
2.将两个有序链表合并成为一个有序链表(附带测试程序)
小结:这个公司招的人少,笔试的人却很多,僧多粥少,准备迎接下一站,希望后面的路会更顺利。
阅读(1464) | 评论(0) | 转发(0) |