- 博客(15)
- 收藏
- 关注
原创 c++词法分析器的实现(编译原理实验)
按照课本上,词法分析器应当使用状态自动机,而石油大的课本把状态机讲的七零八落的,老师讲的课……根本没抓到重点,因此还是要自己动手,丰衣足食。词法分析的重点应当是把输入的代码转化成单词和符号以便于语法分析,因此不需要进行语法的检测(包括括号是否成对等)。所以我们需要读取的单词【1】主要如下:标识符(包含保留字,变量等),运算符号,分割符号(括号,逗号,分号等等),常量(包括数常量和字符、字符...
2017-04-26 17:02:23
7849
原创 作业系列 - 尝试编写SQL数据库(三)
按照之前的想法,似乎应该先做语言处理层,再做内存,再做文件存储,而在实验过程中突然发现如果没有做文件存储的话,设计内存中的数据库很难写,或者担心写了和将来的文件存储层互相排斥,既然是尝试编写SQL数据库,就写一个全套的吧,在这里先写下自己对数据库文件存储格式的设想。因为数据库涉及很多的权限要求,因此我将数据库的前32个byte用于描叙权限,我对权限的设想是这样的,数据库和用户在增删改查等各方面
2016-11-08 21:02:36
368
原创 作业系列 - 尝试编写SQL数据库(二)
语法分析:我仔细的检查了SQL语言的语法,他的格式基本上是固定的,因此我初步把语句分离划分了以下几种情况:1.获得一个单词这个很有必要,在确定关键字等方面都用得到。2.获得括号中的内容在insert语句里和处理where判断的时候都会用的到。3.获得关键字之间的内容比如select * from中的select 和 from 之间的语句,目前该算法实现了取最远和最近的两
2016-10-23 16:23:59
221
原创 作业系列 - 尝试编写SQL数据库(一)
因为第一次尝试做数据库,感觉应该是一个令人蛋疼的经历,因此记录下来,供大家指正。以下是项目下载地址,诚挚的希望大家互相学习,代码可能有点乱,如果有好的建议欢迎大家留言,谢谢大家。参考课本知识,我把自己的数据库分为了这样四个部分:一、应用层本层次用于提交登录和处理SQL语句,按照数据库访问权限的限制,用于储存用户表账号密码的数据库的查询访问权限应当最低,可以在没有登录的情况下访问。但
2016-10-23 15:19:49
418
原创 1025 - A Spy in the Metro
/*书上已经给出了核心代码*///stand c++#include #include #include #include #include // the c#include #include using namespace std;typedef long long LL;const int INF=0x3f
2015-09-09 10:46:36
359
原创 1149 - Bin Packing
这是一道贪心水题。注意空行的控制就没有什么问题了。#include#include#includeusing namespace std;const int ms = (1e5) + 10;int inp[ms];int main(){ int t; scanf("%d", &t); bool isfirst
2015-08-26 11:57:39
361
原创 UVa 11214 - Guarding the Chessboard
这是一道迭代加深搜索的水题,与八皇后问题的解决方法一样,用一个数组来储存行列对角线副对角线是否有棋子,用迭代加深搜索来完成。 //stand c++#include#include#include#include//#pragma comment(linker, "/STACK:102400000,102400000") //
2015-08-24 11:03:50
472
原创 UVa 225 - Golygons
这道题不难,是一道简单的dfs回溯,并不困难,只不过有一个坑就是一个城市不能够走两次(特别是原点不能够在不到重点的时候走到。。。)被这个坑了好久之后,看了大大们的博客才知道了这个,真不知道大大们是怎么意识到这个问题的,题目里貌似没有说。。。代码还可以进行剪枝优化,此处略去,代码如下:#include#include#includeusing namespace
2015-08-20 11:02:35
434
原创 uva 208 - Firetruck
这道题没有什么难度,题目已经告诉了,要预先判断能不能够到达,否则会超时,笔者用的是简单的并查集来判断的,当然也可以用终点来一次bfs,判断每个点是否能够到达终点,然后没有什么太大的问题,要注意一个节点不能够走两次,应该是道暴力水题。#includeusing namespace std;int CanTo[30], vis[30], CT[30];int ans;
2015-08-12 10:37:31
217
原创 uva 11040 - Add bricks in the wall
水题,找规律。#include#include#include#includeusing namespace std;const int ms = 20;int inp[ms][ms];int main(){ int n; scanf("%d", &n); while(n--) {
2015-08-07 20:46:53
378
原创 uva 1600
#include #include #include #include #include #include #include using namespace std;int mp[30][30], web[30][30], yc[30][30], mstp, sx, sy;int bfs(pair ed){
2015-08-03 21:01:08
308
原创 439 - Knight Moves
这是一道简单的最短路的问题,由于地图较小,用深度遍历和广度遍历应该都不会超时,当然广度遍历用时较小,符合ACM精神,此处亦使用广度遍历作为示范:#include #include #include #include #include #include #include using namespace std;int
2015-08-03 19:40:58
273
原创 uva 536 - Tree Recovery
这道题是一道很典型的树的构造,题目类型跟例题548相似。这道题可以直接从字符串中提取,笔者因为对此方法并不熟悉,因此采用了先构造在输出的方法。其方法是现将树构造成一个只有左枝的数,然后从中序字符串中得到左右树的长度,然后直接把左枝截断,成为右枝,如此可以轻松还原出树的原型来。此方法的代码如下:#include #include #include #include
2015-08-03 10:32:57
429
原创 uva - 712
#include #include #include #include #include #include using namespace std;const int xsize = 128 + 10;struct Tree{ Tree *left, *right; int flog; Tre
2015-08-01 10:48:33
239
原创 uva - 673
此题比较简单,用stack来解析即可。#include #include #include #include #include #include using namespace std;const int xsize = 128 + 10;stack inp;char tin[xsize];int
2015-08-01 10:44:28
209
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人