- 博客(40)
- 收藏
- 关注
原创 扑克牌大小
题目 扑克牌游戏大家应该都比较熟悉了,一副牌由54张组成,含3~A、2各4张,小王1张,大王1张。牌面从小到大用如下字符和字符串表示(其中,小写joker表示小王,大写JOKER表示大王): 3 4 5 6 7 8 9 10 J Q K A 2 joker JOKER 输入两手牌,两手牌之间用”-“连接,每手牌的每张牌以空格分隔,”-“两边没有空格,如:4 4 4 4-joker JOKER。
2016-05-24 22:51:44
1189
原创 配置文件恢复
题目 有6条配置命令,它们执行的结果分别是: 注意:he he不是命令。 为了简化输入,方便用户,以“最短唯一匹配原则”匹配: 1、若只输入一字串,则只匹配一个关键字的命令行。例如输入:r,根据该规则,匹配命令reset,执行结果为:reset what;输入:res,根据该规则,匹配命令reset,执行结果为:reset what; 2、若只输入一字串,但本条命令有两个关键字,则匹配
2016-05-24 17:31:21
624
原创 医院门诊管理系统
题目给了实现框架只需要实现几个API函数即可,这里记录下源代码。利用C的系统函数提取字符串,这一点在平时使用的较少,可以作为demo借鉴。//不警告不安全函数#define _CRT_SECURE_NO_WARNINGS#include "stdio.h"#include "string.h"#include "malloc.h"#include "stdlib.h"#ifdef __cp
2016-05-23 19:04:46
11219
4
原创 购物结算系统
题目要求1 总体说明 考生需要模拟实现一个简单的购物结算系统,实现挑选和删除商品、按照最佳优惠方案进行结算、查询购物车订单信息及购物卡余额和积分的功能。 系统初始化时购物卡中有3000元余额和150积分,可以输入命令来初始化系统。1.1 购物活动细则 只要购物卡余额足够,可以进行多次购买,每次购买活动可以包含如下活动: 1、多次挑选商品,每次挑选形成购物车中的一条商品订单; 2、多次删除商
2016-05-22 18:56:58
5526
原创 整数分隔
题目 一个整数总可以拆分为2的幂的和,例如: 7=1+2+4 7=1+2+2+2 7=1+1+1+4 7=1+1+1+2+2 7=1+1+1+1+1+2 7=1+1+1+1+1+1+1 总共有六种不同的拆分方式。 再比如:4可以拆分成:4 = 4,4 = 1 + 1 + 1 + 1,4 = 2 + 2,4=1+1+2。 用f(n)表示n的不同拆分的种数,例如f(7)=6. 要求
2016-05-21 10:17:52
400
原创 坐标移动
题目 开发一个坐标计算工具, A表示向左移动,D表示向右移动,W表示向上移动,S表示向下移动。从(0,0)点开始移动,从输入字符串里面读取一些坐标,并将最终输入结果输出到输出文件里面。 输入: 合法坐标为A(或者D或者W或者S) + 数字(两位以内) 坐标之间以;分隔。 非法坐标点需要进行丢弃。如AA10; A1A; %; YAD; 等。 下面是一个简单的例子 如: A10;S2
2016-05-20 10:11:17
517
原创 识别有效的IP地址和掩码并进行分类统计
题目 请解析IP地址和对应的掩码,进行分类识别。要求按照A/B/C/D/E类地址归类,不合法的地址和掩码单独归类。所有的IP地址划分为 A,B,C,D,E五类A类地址1.0.0.0~126.255.255.255; B类地址128.0.0.0~191.255.255.255; C类地址192.0.0.0~223.255.255.255;D类地址224.0.0.0~239.255.255.255;E
2016-05-19 21:46:13
4122
原创 简单错误记录
使用了博客http://blog.csdn.net/sunnyyoona/article/details/46726931的代码设计思路。这里主要记录一下在处理这一题时自己理解错的地方: 1、需要从输入的日志信息中提取文件名和行号。如果这样想这个问题,那么需要分割字符串分别获取文件名和行号。其实可以利用格式化输入分别获取文件名字符串和行号整数值。 2、输入一条日志,显示一次更新的日志信息。理解为
2016-05-19 12:11:46
483
原创 报数
其实就是约瑟夫环问题,地推公式如下:i为参与报数的人数,f[i]为报数m结束时最后留下来的人的编号。 f[1] = 0 f[i] = (f[i-1]+m)%i 代码#include <iostream>using namespace std;int m = 3;void JosephusProblem(int n) { int i; int f = 0; for
2016-05-17 22:41:54
491
原创 火车出站
题目: 给定一个正整数N代表火车数量,0#include <iostream>#include <stack>#include <vector>using namespace std;static int n = 0;void trainOutOrder(int *num, stack<int> s, vector<int> v, int index) { int i, j;
2016-05-17 17:34:38
594
原创 for循环效率
《高质量程序设计语言》提到for循环遍历数组中“先行后列”和“先列后行”有不同的效率。这个勾起了我的兴趣,原文介绍的应该是针对二维数组及其以上的多维数组。效率不同的原因是不同的语言安排数组元素的存储空间的顺序不一样。比如C/C++语言按照“先行后列”的顺序安排数组元素的存储空间。Fortran语言按照“先列后行”的顺序安排数组元素的存储空间。会导致什么后果呢? 引用书中的例子来说明,假设二维数组n
2016-04-18 22:13:20
1167
原创 最大公约数和最大公倍数
求最大公约数的方法:辗转相除法,过程如下 1、当a%b == 0,那么a与b的最大公约数就是b。 2、当a%b != 0,那么有tmp = a%b; a = b; b = tmp。求最大公倍数的方法:两数相乘除以它们的最大公约数。 代码如下(VS2015)#include "stdafx.h"//最大公约数int greatestCommonDivisor(int a, int b) {
2016-04-18 20:17:28
722
原创 浮点变量值的比较问题
笔试多益时做过一道题:如何判断浮点数是否等于0? 当时很天真,答案如下double a = 0.00001;if(0 == a)printf("a equal zero\n");笔试后一交流发现不同意这种做法的很多,理由是浮点数的精度问题。推荐的做法是当浮点数处于一定精度范围内时,则判断该浮点数等于0。double a = 0.00001;if(a > -0.000001 && a < 0.0
2016-04-18 18:36:22
584
原创 HWOJ 字符串最后一个单词长度
题目:输入一个字符串,长度小于128,求字符串最后一个单词的长度,单词以空格隔开。 实例: 输入 hello world 输出 5 AC代码:#include <string.h>#include <stdio.h>#include <stdlib.h>int main() { char str[200]; int n, word_n; //fget
2016-04-06 20:35:09
451
原创 ACM输入问题以及矩阵最大路径累加和
#include "stdafx.h"#include #include #include int max(int a, int b){ int tmp; tmp = a<b?b:a; return tmp;}int findMaxValue(int **p,int n, int m){ int i,j; //先求第一行的累加值 for(i=0;i<n-1;i++)
2016-04-02 22:13:52
1468
原创 cygwin 安装 ffplay
1、参考博文http://www.360doc.com/content/12/0719/18/2660674_225285935.shtml中的方法,在编译SDL-1.2源码时出现问题,没有set-gcc-default-*.shgoogle后在https://github.com/adobe-flash/crossbridge/blob/master/cygwin/bin/set-gcc-d
2016-03-21 21:22:48
1185
原创 HWOJ N皇后
注意: 1、回溯法 2、逐行判断 3、打印调试算法:将不能填入的棋盘格进行计数累加,回溯时则将计数累减。当所有皇后都放入棋盘则累加计数值并返回。代码:#include "OJ.h"/*功能: 求解放置8皇后方案的个数。输入: 无返回: int:放置8皇后方案的个数*/void PrintQueen(int *chess,int n
2016-02-11 14:06:20
536
原创 HWOJ 删除重复字符
注意点:对空指针的判断代码如下:/*Description 给定一个字符串,将字符串中所有和前面重复多余的字符删除,其余字符保留,输出处理后的字符串。需要保证字符出现的先后顺序。Prototype int GetResult(const char *input, char *output)Input Param input
2016-02-11 11:52:52
339
原创 重造轮子 用递归函数和栈操作逆序一个栈
目标:仅使用递归与栈操作将栈逆序。方法:有点利用回溯法的味道。在递归操作中做两次取栈顶元素的操作后,并将第一次取得的栈顶元素再入栈。这个操作可以将原栈中最顶部的元素压入栈底。当递归函数返回时,再将另一个取栈顶操作获得的元素压入栈。然后在对从栈顶到次栈底这一段元素调用上诉操作。代码:class Solution{public: void reverseStack(stack& s){//
2015-10-19 19:53:05
533
原创 重造轮子-random5到random7
目标:有一个rand5函数可以随机产生0~4这5个数,设计一个rand7函数,利用这个rand5函数随机产生0~6这7个数。方法:面试这一题,第一想法就是要用编码的思想。那么想表达完所有的7个数需要调用两次rand5函数,因为调用两次rand5函数可以产生的组合为5*5个组合。那么在看看rand5()产生0,1,2,3,4,rand5()*5产生0,5,10,15,20发现rand
2015-09-21 20:41:10
3111
原创 重造轮子-sqrt
目标:实现sqrt开方函数。方法:如果返回值是int值,可以用二分法来做。是通过x的平方与待开方数进行比较,取最接近的数。这里说的不是这个方法。因为面试时,你说二分法他们不满意,问有没有更好的方法。当然是有的,用牛顿迭代法。牛顿迭代法:是数学中一种求解近似值的方法。如下图所示就是牛顿迭代法的简单推导那么对于求开方这个问题,则就是解函数,如下图所示代码class So
2015-09-21 20:02:45
591
原创 重造轮子-栈实现队列
目标:用两个栈实现一个队列数据结构方法:栈是先入后出,队列是先入先出。那么对于入队列就是,普通的压栈操作。对于返回队列首元素呢,则是将栈B的元素全部顺序出栈,压入栈A,然后再将栈A的栈顶元素出栈。对于弹出队首元素呢,则是与返回队列首元素的操作相同。代码:class Solution{public: void push(int num){ strDataTwo.push(num)
2015-09-19 22:46:28
575
原创 重造轮子-最小栈
目标:构建一个栈,以O(1)的时间复杂度返回栈内数据的最小值。方法:用两个栈实现,一个存放原数据,一个存放最小值。对于原数据栈按普通的栈规则进行出栈入栈,对于最小值栈则按照入栈规则1、如果栈为空直接将当前的输入数入栈;2、如果输入数小于等于最小值栈栈顶元素的值,那么将该输入数入栈;出栈规则1、如果原数据栈弹出的元素等于最小值栈顶的元素,那么最小值栈顶的元素也弹出;2、如
2015-09-19 17:39:49
435
原创 复习排序-归并排序
归并排序两两归并排序,递归和非递归方法。待排序元素有n个,可以将n个元素分为n/2个归并组,余下的按n/4个为归并组,直到最后完全归并。算法实现一:递归归并。void Mergesort(int *num,int length){ int *sort = (int*)malloc(length*sizeof(int)); if(sort == NULL) ex
2015-09-16 19:30:12
362
原创 复习排序-堆排序
堆排序二叉树的性质是堆排序的关键点。二叉树的性质5,如果一颗有n个结点的完全二叉树的结点按层序编号(从第一层到最后一层,每层从左往右),则对任一结点i(1(1) 如果i=1,则结点i是二叉树的根节点;如果i>1,则其双亲是结点i/2(取整数部分)。(2) 如果2i>n,则结点i无左孩子;否则其左孩子是结点2i。(3) 如果2i+1>n,则结点i无右
2015-09-16 19:22:44
350
原创 复习排序-希尔排序
希尔排序变增量的直接插入排序,关键之处在于直接插入排序的比较步进值是从大减小到1。算法的时间复杂度为O(nlogn)。算法实现一:步进值采用increment = increment/3+1,三层循环结构。最外一层为步进值的递减循环,中间两层为直接插入排序。void ShellSort(int *num,int length){ int increment = length;
2015-09-16 19:09:47
336
原创 复习排序-直接插入排序
直接插入排序每次将待排序的元素插入到已经排好的序列中,需要已排好序的元素发生移动。算法实现一:通过哨兵tmp记录每次要插入的元素值,在已排好序的元素移动完成后将tmp值插入到循环停止的地方。voidDirectorInsertSort(int *num,int length){ int tmp,i,j; for(i=1;i<length;i++) { i
2015-09-16 19:01:38
338
原创 复习排序-简单选择排序
简单选择排序不需要一直做两两交换元素值,而是交换下标。在一轮比较结束时才交换元素值。算法实现一:通过tmp来代替待选择排序的元素,依次与数组元素比较,交换下标值。voidSimpleSelectSort(int *num ,int length){ int i,j; for(i=0;i<length-1;i++) { tmp = i; f
2015-09-16 18:58:27
319
原创 复习排序-冒泡排序
冒泡排序两两交换,遍历整个数组,将最大值(最小值)提取到数组的底部(顶部)。算法时间复杂度为O(n^2)算法实现一:两层循环,第一层循环减少每次遍历的元素个数,第二层循环通过两两比较、交换实现最小值沉入底部。void BubbeSort(int *num, int length){ inti,j; for(i=0;i<length-1;i++) for(j=0;j<l
2015-09-16 18:54:29
370
原创 Tiny6410裸机开发实验----重定位代码到DRAM
解决过程:1、 将source code拷贝到ubuntu虚拟机的share目录下,重新make,产生可执行文件ddr.bin。2、 连接Tiny6410设置为SD BOOT并启动,打开DNW,使用USB下载方式将ddr.bin文件下载到NANDFlash。3、 Tiny6410设置为NANAN BOOT并启动,在DNW中输入字符,观察显示字符是否为输入值加1 。出现问题及解
2015-09-16 18:47:56
733
原创 搭建Tiny6410裸机开发环境
工作目标:搭建Tiny6410裸机开发环境解决过程:1、 烧录superboot到SD卡。Superboot采用的版本:superboot-20101117。烧录软件:SD-Flasher。以管理员身份运行SD-Flasher,先ReFormat检测到的SD卡,在ReLayout SD卡,最后执行Fuse操作。2、 打开DNW,选择功能选项a,安装Tiny6410的US
2015-09-16 18:43:47
1408
原创 《剑指offer》二维数组中的查找
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路:二维数组中每行数字递增,每列数字递增。那么从数组的右上角开始寻找,假设数组为A[m][n],待查找的数为num。1、如果A[i][j-1]2、如果A[i][j-1]>num,那么说明第j列的所有数字均比
2015-09-13 11:08:07
446
原创 tiny6410 蜂鸣器字符设备驱动<2>
测试代码ru#include #include #include #include #include #include #include #define MAGIC 'f'#define START_CMD0 _IO(MAGIC,0)#define STOP_CMD1 _IO(MAGIC,1) int main(int argc,char
2014-05-03 20:40:32
832
原创 tiny6410 蜂鸣器字符设备驱动<1>
这两周主要学习了字符设备驱动、杂项设备驱动以及驱动程序设计的核心理论与技巧。完成了一个蜂鸣器的字符设备驱动和一个LED杂项设备驱动。做一下总结。 字符设备驱动:字符设备驱动是基本的串行输入输出驱动,将一些按字节、字进行读取、写入的设备做成驱动模块。Insmod装载驱动模块到内核,则用户空间与内核空间的交互就可以达成控制设备的目的。为了方便驱动的设计与调试,将驱动做成
2014-05-03 20:25:16
777
原创 tiny6410 Miscdevice driver<1>
#include #include #include #include #include #include #include #define MAGIC 0x05#define CMD0 _IO(MAGIC,0)#define CMD1 _IO(MAGIC,1)#define CMD2 _IO(MAGIC,2)#define CMD3 _IO(M
2014-04-25 20:49:42
542
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人