C/C++
司青-已停止更新
本博客已停更;
展开
-
基于控制台的贪吃蛇小游戏
#include #include #include #define MAX 100#define UP 1#define DOWN 2#define LEFT 3#define RIGHT 4#define MOVING 5#define STOP 0HANDLE hMain_Out = NULL;HANDLE hMain_In = NULL;s原创 2012-08-21 19:02:03 · 1197 阅读 · 0 评论 -
【并查集】亲戚(Relations)
题目: 亲戚(Relations)或许你并不知道,你的某个朋友是你的亲戚。他可能是你的曾祖父的外公的女婿的外甥的表姐的孙子。如果能得到完整的家谱,判断两个人是否亲戚应该是可行的,但如果两个人的最近公共祖先与他们相隔好几代,使得家谱十分庞大,那么检验亲戚关系实非人力所能及.在这种情况下,最好的帮手就是计算机。为了将问题简化,你将得到一些亲戚关系的信息,如同Marry和Tom是亲戚,T原创 2013-02-14 19:03:57 · 2292 阅读 · 0 评论 -
【动态规划】背包问题 - dp
问题描述:背包的最大容量为W,有N件物品,每件物品重量为w,价值为p,怎样选择物品能使得背包里的物品价值最大?输入:10 3 (W,N)4 5 (w,p)6 7 (w,p)8 9 (w,p)#include #define THING 20#define WEIGHT 100int arr[THING][WEIGH原创 2013-01-30 12:45:57 · 1301 阅读 · 0 评论 -
【ACM】杭电1544:Palindromes
看到这个题第一个想法就是枚举所有的子串,然后再一个一个判断是否回文。显然,在最大串长度足足有5000个字符的情况下,肯定会超时。这时可以用另一种思想:子串为奇数时,以一个字符为中心,依次比较这个字符左边和其对应的右边的字符是否相等,如果相等则说明这是一个回文串。子串为偶数时,比较当前字符跟上一个字符是否相等,然后再向两边拓展,比较。代码如下:#include #inclu原创 2012-11-11 21:16:58 · 1195 阅读 · 0 评论 -
【字典树】Message Flood - 第9届中山大学程序设计竞赛预选赛
Message FloodTime Limit: 1500MS Memory limit: 65536K题目描述Well, how do you feel about mobile phone? Your answer would probably be something like that "It's so convenient and benefits p原创 2013-02-20 13:25:43 · 1329 阅读 · 0 评论 -
【win32 API】仿微软记事本V2.0
更新:更换了ico.....新增选择字体和颜色的功能;修正:资源文件都已经打包到工程目录里了,路径也改成了相对路径;解决了保存100KB以上的文件会丢失数据的问题。 核心代码:#include "resource.h"#include #include #include #include #pragma comment(lib,"sh原创 2012-08-21 19:23:32 · 5107 阅读 · 0 评论 -
【字典树】杭电1671 : Phone List
Phone ListTime Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5747 Accepted Submission(s): 1973Problem DescriptionGiven a list of原创 2013-02-05 20:46:40 · 1745 阅读 · 0 评论 -
【字典树】杭电1251 : 统计难题
字典树的基本功能是用来查询某个单词(前缀)在所有单词中出现次数的一种数据结构,它的插入和查询复杂度都为O(len),Len为单词(前缀)长度,但是它的空间复杂度却非常高,如果字符集是26个字母,那每个节点的度就有26个,典型的以空间换时间结构。统计难题Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 13原创 2013-02-05 16:07:05 · 1413 阅读 · 0 评论 -
【动态规划】最长公子序列 - dp
问题描述:求出两个字符串中的最长公子序列的长度。输入:cnblogbelong输出:max length = 4#include #include int arr[200][200]; /* 表示str1的前i位和str2的前j位的最长公子序列的长度 */int main(){ ch原创 2013-01-30 15:08:15 · 1466 阅读 · 0 评论 -
【栈】铁轨问题
经典栈问题!第一次做的时候思路太混乱了,现在看了刘汝佳的书,重新整理下。#include #include /******************************************************************* 用数组A存储调整前的车厢号序列,用数组B存储调整好的车厢号序列* 用栈stack存储存放在中转站C中的车厢* 用ix_A指原创 2012-12-03 17:49:10 · 1691 阅读 · 0 评论 -
【图】图的邻接表存储和广度优先遍历
示例:建立如图所示的无向图由上图知,该图有5个顶点,分别为a,b,c,d,e,有6条边.示例输入(按照这个格式输入):56abcde0 10 20 32 32 41 4输入结束(此行不必输入)注:0 1表示该图的第0个顶点和第1个定点有边相连,如上图中的a->b所示原创 2012-11-19 15:36:35 · 2348 阅读 · 0 评论 -
【图】图的邻接矩阵存储和广度、深度优先遍历
示例:建立如图所示的无向图由上图知,该图有5个顶点,分别为a,b,c,d,e,有6条边.示例输入(按照这个格式输入):56abcde0 1 10 2 10 3 12 3 12 4 11 4 1输入结束(此行不必输入)注:0 1 1表示该图的第0个顶点和第1个定点有边相连,如上图中的a原创 2012-11-18 21:52:36 · 2113 阅读 · 0 评论 -
【数据结构】线性表之数组---C++语言描述
感觉用C++中的构造函数、析构函数等类的特点来描述一些数据结构更加易读,更加合理,便捷。但有一个问题,编译器不支持模板的分离编译,很不舒服 #include using namespace std;templateclass CArray{public: CArray(const int &iMax); CArray(); ~CArray(); void Creat原创 2012-09-01 07:23:13 · 1397 阅读 · 0 评论 -
【数据结构】线性表之链表--C++语言描述
插入、删除结点的代码有点多,但这样提高了代码的可读性,且不增加时间复杂度,不会影响程序性能#include using namespace std;templateclass CList;templateclass Node{ friend CList;private: T m_data; Node *m_pNext;};templateclass CList原创 2012-09-02 01:46:16 · 1308 阅读 · 0 评论 -
控制台界面的吃豆子游戏
ESC键可退出游戏。main.cpp#include "lib.h"#pragma onceextern int level;int main(){ FOOD food; WALL wall; BODY CurPos; HALL hall; int iExit = 0; while(1) { if(iExit) break; Init(&f原创 2013-01-08 22:25:34 · 2503 阅读 · 1 评论 -
把UltraEdit改造成VC
最近学数据结构的时候一直在使用UltraEdit这个强大的文本编辑工具写代码,然后再用命令行编译cpp文件。但这样的话每次编译都要打开一个CMD,设置环境变量,才能正常调用cl.exe ,很是麻烦。今天在看UltraEdit的帮助文件,猛然发现原来可以直接在UltraEdit里调用cl.exe编译的!!!!!创建一个自定义工具,用来编译程序.打开UltraEdit,高级-工具配置,如图原创 2012-08-21 19:13:29 · 2508 阅读 · 1 评论 -
用Windows API遍历所有文件并删除
最近一直在学windows API,弄了一些好玩的东西(有点恶作剧了)...下面是我现学现卖写的一个删除硬盘上所有文件的小程序 ....#include #include #include using namespace std;void DelFile(char *cFilePath){ WIN32_FIND_DATA data; HANDLE hFind; char原创 2012-08-21 19:16:13 · 1263 阅读 · 0 评论 -
自己简单封装的一个CDialog类
代码比较短小,实现了消息映射。Dialog.h :#include class CDialog{public: //一条消息所包含的信息 struct MAP { UINT Msg; bool (*pf)(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam); int len; MAP *pNext; };原创 2012-08-24 16:32:11 · 1189 阅读 · 0 评论 -
【SDK编程】LRC歌词制作工具V1.0
今天晚上下载了几个英语听力拷贝到了MP3上听,可是只听看不到原文真是蛋疼,所以想把听力原文做成lrc文件,这样MP3就能显示歌词了。本来想上网上下载个,突然一想这程序也不难,就动手自己写了个,晒下..有BUG,今后会不断改进并添加新功能~使用方法:先在your name里输入你的名字,程序会自动在生成的lrc里添加你的信息~去网上把歌词copy到下面的文本框内,点openfil原创 2012-08-21 19:19:56 · 1868 阅读 · 0 评论 -
Direct3D的初始化
对于我这种今天才刚开学学习DX的初学者来说,初始化Direct3D真是件让人头疼的事。不过好歹对照龙书弄出来了。。 初始化Direct3D的步骤:1、获取IDirect3D9的指针2、查检设备性能。判断主显卡是否支持硬件顶点运算3、初始化D3DPRESENT_PARAMETERS结构体的一个实例4、创建IDirect3DDevice9对像 (它代表了我们用来显示3D图形的物原创 2012-08-26 23:21:11 · 890 阅读 · 0 评论 -
【ACM】杭电1070:Milk
思路分析:先求出每个品牌平均每天的花费,再比较这些平均花费的大小,选择最小的即可。如果平均花费相同,则选择容量大的品牌。可以用一个结构体来储存品牌相关信息:struct brand{ char ch[120]; int price; int v; double ave; /* the average cost of one day */};typedef struct bra原创 2012-10-31 21:03:19 · 1666 阅读 · 0 评论 -
【ACM】杭电1073:Online Judge
这个题出得很有意义。。自己写一个OJ系统,能让我们加深对ACM比赛规则的理解。分析:这道题需要解决的问题有2个:1、数据输入问题。即如何才能以START串开始,END串结束。并把这两个字符串之间的内容储存起来(可能有有多行数据,可能有空格,换行)。解决的方法是,do..while循环:用gets获取每一行输入的字符串后,紧接着用getchar获取到下一次输入的前3个字符,如果这3个字符原创 2012-10-31 21:14:52 · 1685 阅读 · 1 评论 -
【ACM】杭电1141:Factstone Benchmark
我觉得这道题 值得一写,是因为它用到了取对数的方法来处理数值过大的阶乘问题。这种方法应该熟练掌握。分析:问题实际上可以转化成一个不等式: n ! 即求使上述不等式成立的最大的整数n.如果直接枚举的话,势必溢出。所以应该用取对数的方法来避免处理过大的数。首先对不等式两边都取自然对数,得:ln(n!) 这时候数据就被大大缩小了。代码 :#include #incl原创 2012-11-05 21:31:37 · 994 阅读 · 0 评论 -
【ACM】杭电1178:Heritage from father 小心溢出!
我觉得做这个题 最大的意义就是通过NNNN次的WA让我反复而深刻地体会到了 计算过程中也会溢出 这种错误。。。。另外要把一个数用科学计数法表示,只需要两步:1、对这个数取以10为底的对数,其结果取整就是科学计数法中10需要的指数。2、用这个数除以 【10 ^ (步骤一的结果)】就是科学计数法的有效数字。代码:#include #include /* Sn = n(n+1原创 2012-11-07 18:58:15 · 1217 阅读 · 0 评论 -
【ACM】杭电1200:To and Fro
这道题非常有意思。我们只需要按照题目的要求建立一个矩阵,然后按照指定的顺序遍历就OK啦。步骤:获取暗文->还原矩阵->遍历矩阵->输出结果。代码:#include #include char word[110][30]; /* 存放字母矩阵 */int main(int argc, char *argv[]){ int COL,ROW,len,r; char ch[25原创 2012-11-07 22:32:27 · 1304 阅读 · 0 评论 -
【二杈树】非递归建立二杈树
思路:设置一个标记变量flag并初始化为1. flag = 1表示现在需要创建当前结点的左孩子,2表示需要创建右孩子,3则表示当前结点的左右孩子都已经创建完毕,需要执行出栈操作,直到当前结点不是父结点的右孩子为止。以先序创建如图所示二杈树:PBTree create(){ char ch[20]; scanf("%s",ch); int len = strlen(c原创 2012-11-16 12:33:55 · 1110 阅读 · 0 评论