Jun
16
WOJ1041 MagicForest解题报告 By Felix021
题目路径: http://acm.whu.edu.cn/oak/problem/problem.jsp?problem_id=1041
描述:给出一个N*N的矩阵,每个格子有a, p, r, d, k 5种状态,需要从p出发点到a点,初始生命值为2,r是一般通路,d使生命值减1,k使生命值减到0。问是否可以从p点走到a点。
分析:显然这是一道搜索题,搜索从p到a的路径。在搜索的过程中遇到d生命值减1,遇到k则视为无路径。由于生命值存在0、1、2三种状态,所以不能像走普通的迷宫那样来简单标记某个格子是否可走,而是要用更复杂些的规则来判断一个格子是否需要走:如果曾经有一次以不比当前值低的生命值走过这个这个格子,那么就没有必要再走一次,否则有必要。实现方法是建立一个初始化为0的二维数组,在每次通过某个格子的时候,比较历史走过此格子的最高生命值和当前生命值,如果历史最高生命值不低于当前生命值,则忽略此路径,否则继续此路径。由于本题不要求最短路径,而且可能需要完全的搜索,所以BFS和DFS都可以。
代码如下:
题目路径: http://acm.whu.edu.cn/oak/problem/problem.jsp?problem_id=1041
描述:给出一个N*N的矩阵,每个格子有a, p, r, d, k 5种状态,需要从p出发点到a点,初始生命值为2,r是一般通路,d使生命值减1,k使生命值减到0。问是否可以从p点走到a点。
分析:显然这是一道搜索题,搜索从p到a的路径。在搜索的过程中遇到d生命值减1,遇到k则视为无路径。由于生命值存在0、1、2三种状态,所以不能像走普通的迷宫那样来简单标记某个格子是否可走,而是要用更复杂些的规则来判断一个格子是否需要走:如果曾经有一次以不比当前值低的生命值走过这个这个格子,那么就没有必要再走一次,否则有必要。实现方法是建立一个初始化为0的二维数组,在每次通过某个格子的时候,比较历史走过此格子的最高生命值和当前生命值,如果历史最高生命值不低于当前生命值,则忽略此路径,否则继续此路径。由于本题不要求最短路径,而且可能需要完全的搜索,所以BFS和DFS都可以。
代码如下:
Jun
15
08年6月开发语言排行榜
1、Java (20.0%)
2、C (15.5%)
3、C++ (10.8%)
4、PHP (10.2%)
5、Visual Basic (9.8%)
6、Perl (5.5%)
7、Python (4.9%)
1、Java (20.0%)
2、C (15.5%)
3、C++ (10.8%)
4、PHP (10.2%)
5、Visual Basic (9.8%)
6、Perl (5.5%)
7、Python (4.9%)
Jun
15
(看到一些关于操作系统内存管理以及32位系统到底能访问多少内存的讨论,觉得比较有价值,放上来。)
32位系统能管理多大内存?
以前一直以为是4GB,认为大于4G的内存操作系统和应用软件都没办法利用,今天看到这些讨论,才发现原来不是的,就像当年DOS可以访问大于1M的内存一样,通过PAE,Win32也可以访问大于4GB的内存。
这样的话一些对内存消耗较大的程序可以通过AWE来利用那些“多出来”的内存,或者甚至可以做一个内存映射软件将一部分应用程序的内存空间映射到那大于4GB的空间去,这样我们就不用担心自己主板上插了大于4G的内存在32位系统下用不了啦(当然前提是主板得支持大于4G的内存)
以下转自CSDN的讨论帖:http://topic.csdn.net/u/20080614/15/C1FDC87A-8CF2-44E6-A56A-A2F5CDD05555.html
整理by sandy_zc_1
32位系统能管理多大内存?
以前一直以为是4GB,认为大于4G的内存操作系统和应用软件都没办法利用,今天看到这些讨论,才发现原来不是的,就像当年DOS可以访问大于1M的内存一样,通过PAE,Win32也可以访问大于4GB的内存。
这样的话一些对内存消耗较大的程序可以通过AWE来利用那些“多出来”的内存,或者甚至可以做一个内存映射软件将一部分应用程序的内存空间映射到那大于4GB的空间去,这样我们就不用担心自己主板上插了大于4G的内存在32位系统下用不了啦(当然前提是主板得支持大于4G的内存)
以下转自CSDN的讨论帖:http://topic.csdn.net/u/20080614/15/C1FDC87A-8CF2-44E6-A56A-A2F5CDD05555.html
整理by sandy_zc_1
Jun
13
武大计算机学院教C语言时用的IDE都是TurboC2,矬的让人无语,于是学长们都推荐Devcpp,但是Devcpp和TurboC2不一样,TurboC2提供一个UserScreen,运行完可以切换回去查看运行时的输出,但是Devcpp编译出的是32位控制台程序,运行的时候由Windows提供一个控制台界面,在程序运行完后就退出,于是很多大一新生刚开始用Devcpp总是要问,怎么Devcpp一运行就退出啊,怎么让Devcpp停在结果页面啊——首先要纠正,主语不应该是Devcpp,而是Devcpp编译出的程序。其实解决办法很简单。
最简单的解决办法是,在程序的最后加上一句 getchar(); 就行了。但是如果程序在运行过程中有输入,这一招就不灵。因为scanf函数读取键盘输入的缓冲区的时候不会读取用户最后按下的回车('\n'),所以在缓冲区还有一个回车字符,这个字符会被getchar()读取,所以如果有输入的话这一招就不够灵了。不过可以打个补丁——用两个gerchar()即可。
稍微麻烦一点的解决办法是使用system("pause")。在C语言中system()函数包含在头文件"stdlib.h"中,用途是执行一条命令行下的命令,效果相当于你在命令提示符下执行一条命令。而system("pause")的意思就是执行一条pause命令,于是程序会输出一行"Press any key to continue..."并等待你的按键。注意一定要在源文件前面加上 #include
最矬最简单的办法是 while(1); 。死循环可以让程序停住,按下CTRL+C就可以退出,但是这是很不好的习惯,尽量不要这么用。
最简单的解决办法是,在程序的最后加上一句 getchar(); 就行了。但是如果程序在运行过程中有输入,这一招就不灵。因为scanf函数读取键盘输入的缓冲区的时候不会读取用户最后按下的回车('\n'),所以在缓冲区还有一个回车字符,这个字符会被getchar()读取,所以如果有输入的话这一招就不够灵了。不过可以打个补丁——用两个gerchar()即可。
稍微麻烦一点的解决办法是使用system("pause")。在C语言中system()函数包含在头文件"stdlib.h"中,用途是执行一条命令行下的命令,效果相当于你在命令提示符下执行一条命令。而system("pause")的意思就是执行一条pause命令,于是程序会输出一行"Press any key to continue..."并等待你的按键。注意一定要在源文件前面加上 #include
最矬最简单的办法是 while(1); 。死循环可以让程序停住,按下CTRL+C就可以退出,但是这是很不好的习惯,尽量不要这么用。
Jun
9
WHUACM 20080608 DAY4个人赛A题
描述:通配符*代表0个或多个字符,?代表不多不少正好一个字符。*和?的某些组合是等价的,比如*??*和?*?等价。给出一串只包含a-z、A-Z、*、?的字符串,把它转换成最短小的等效字符串——注意这里的小:比如*?比?*小。
分析:
描述:通配符*代表0个或多个字符,?代表不多不少正好一个字符。*和?的某些组合是等价的,比如*??*和?*?等价。给出一串只包含a-z、A-Z、*、?的字符串,把它转换成最短小的等效字符串——注意这里的小:比如*?比?*小。
分析:
Jun
8
WHUACM 20080608 Day4个人赛B题
描述:在一个N*M的矩阵中有两个人AB分别处于行列都不相同的两个位置。AB轮流走动,可以在棋盘范围内上下左右走任意步数。若某个人停在或走过对方当前所在的行或列,则对方赢。给出矩阵的大小和AB的初始位置,A先走,如果AB都尽可能走好,问谁会赢。
分析:
描述:在一个N*M的矩阵中有两个人AB分别处于行列都不相同的两个位置。AB轮流走动,可以在棋盘范围内上下左右走任意步数。若某个人停在或走过对方当前所在的行或列,则对方赢。给出矩阵的大小和AB的初始位置,A先走,如果AB都尽可能走好,问谁会赢。
分析:
Jun
8
WHUACM 20080608 Day4个人赛C题
描述:给出图的顶点数以及每个顶点的度数(每两个顶点之间最多只有一条边),证明该图的存在性。
证明:
将图的顶点按度数排序,找到度数最大的顶点(设度数为n0)
去掉这个顶点,同时使接下来n0个顶点的顶点数减一。
重复上述步骤,直至剩余顶点的度数都为0,则图存在,否则图不存在。
C代码:
描述:给出图的顶点数以及每个顶点的度数(每两个顶点之间最多只有一条边),证明该图的存在性。
证明:
将图的顶点按度数排序,找到度数最大的顶点(设度数为n0)
去掉这个顶点,同时使接下来n0个顶点的顶点数减一。
重复上述步骤,直至剩余顶点的度数都为0,则图存在,否则图不存在。
C代码:
Jun
1
from http://news.skycn.com/article/14176.html
ZDNet UK的一篇文章列举了10种常见的,但常惹你生气的软件。它们常常会弄巧成拙,令你痛苦不堪。
Adobe Reader:我们只是用它看电子书,但它却像官僚机构一样臃肿,不间断的更新(还要求重启,这是什么道理?)。
Apple:它让微软看起来是个好人。
Windows Update:“立即重启”,“不要关闭电源,直至5项更新完成”,“你需要安装Microsoft Genuine Advantage”,“请在安装前关闭所有应用程序”。
ZDNet UK的一篇文章列举了10种常见的,但常惹你生气的软件。它们常常会弄巧成拙,令你痛苦不堪。
Adobe Reader:我们只是用它看电子书,但它却像官僚机构一样臃肿,不间断的更新(还要求重启,这是什么道理?)。
Apple:它让微软看起来是个好人。
Windows Update:“立即重启”,“不要关闭电源,直至5项更新完成”,“你需要安装Microsoft Genuine Advantage”,“请在安装前关闭所有应用程序”。