自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

堆放杂物

不知道啊不知道…

  • 博客(38)
  • 收藏
  • 关注

原创 数据结构与算法B代码编写作业,树的转换,解题报告&AC代码

这道题大体思路是:根据一棵树的深度优先遍历过程直接用左孩子右兄弟方法构造二叉树,再求出二叉树的深度。所以这个问题被分成了两部分:根据一棵树的深度优先遍历过程直接用左孩子右兄弟方法构造二叉树;求一棵给定二叉树的深度。后面那个问题显然更简单(好吧其实是非常简单),我们先来处理它。查找一棵树的深度的递归计算方法比较显然:一棵树的深度=(它的所有子树深度的最大值+1),而外部节点(即树叶的不存

2013-10-30 23:37:42 1651

原创 数据结构与算法B代码编写作业,电话号码,解题报告&AC代码

这道题的思路来自同宿舍的一只大神琨哥,简单来说就是用“十叉树”存储所有电话号码,边存储边查重。我们用“十叉树”从第1层开始(认为根节点是0层)存储字符串,第i层存储字符串的第i位。这样就有一个比较直观的前缀判断规则:如果一个字符串A是另一个字符串B的前缀,那么它的末尾一位必然在由B构成的路径中。程序要做的就是标记每一个这样的“尾巴”如果发现有“尾巴”在另一个字符串的路径中或者两个尾巴重合了(就

2013-10-30 22:12:21 1427

原创 数据结构与算法B代码编写作业,Huffman编码树,解题报告&AC代码

又来写解题报告了,这道题相比于前两道来说都要简单一些。Huffman树的生成办法很简单:从指定节点堆中选出最小的两个节点作为左右子树,它们的和为父节点,将父节点加入节点堆,从节点堆中删除子树的节点。程序的实现就是模拟上面的过程生成这棵二叉树。其中要注意的一点就是如何选出最小的两个节点:我这里使用了C++中STL的Priority_Queue,这是一个现成的顺序队列,好用、省时。就说

2013-10-28 21:49:25 1750

原创 数据结构与算法B代码编写作业,由中根序列和后根序列重建二叉树,解题报告&AC代码

好久没有一遍A题过了…截张图炫耀一下……表达式树那道题没有写解题报告是因为当时A的时候已经不会再爱了,其他题还是滚回来写解题报告吧= =这道题我依然用了中规中矩的办法:输入数据 -> 建立二叉树 -> 前序遍历输出当然有很多不需要建树就能解决的方法,这里既然是数据结构练习,就不提那些办法了(机智的大胖用了机智的办法然后WA了= =)首先了解一些关于遍历的性质:1.一棵二叉树

2013-10-28 15:58:25 3358

原创 数据结构与算法B代码编写作业,表达式·表达式树·表达式求值,AC代码&注释

现在处于刚刚A题身心俱疲的状态…解题报告什么的实在是写不动了…从这篇文章开始将没有解题报告,只有附有详细注释的代码。另外…这里的代码只是一个思路的参考,同学们还是要自己写的啊=___=(当然真实情况是)为了防止被助教同志查出代码重复而请我喝茶…小伙伴们一定不要直接把我的代码交给DSB……所以代码在下面……/*ID: Moien_PodieneLANG: C++*/

2013-10-26 22:19:24 1288 2

原创 数据结构与算法B代码编写作业,表达式·表达式树·表达式求值,AC代码&注释

现在处于刚刚A题身心俱疲的状态…解题报告什么的实在是写不动了…从这篇文章开始将没有解题报告,只有附有详细注释的代码。另外…这里的代码只是一个思路的参考,同学们还是要

2013-10-26 22:11:45 258

原创 数据结构与算法B作业三,栈与队列

继续做题……Question 1栈的特点包括先进先出后进后出先进后出后进先出没啥说的,最后两项Question 2队列的特点包括先进先出后进先出后进后出先进后出还是没啥说的,第一、第三项Question 3依次读入数据元素序列{a,b,c,d,e,f,g} 进栈,每进一个

2013-10-04 21:35:00 670 1

原创 数据结构与算法B代码编写作业,stack or queue,解题报告&AC代码

这道题有很多机智的解决方法…我这一种基本上是最麻烦的…麻烦是因为要练练手…好久没写队列和栈了有点生疏= =思路很简单,模拟出栈和队列,然后看看哪个不符合,就搞定了……AC代码如下…果然生疏了啊…队列写的有点问题导致RE了很多次,最后又因为把Queue写成Quene结果WA了两次…命途多舛……#include using namespace std;templat

2013-10-04 21:32:02 1427 1

原创 数据结构与算法B代码编写作业,栈的基本操作,解题报告&AC代码

唔…这道题如果要强行用数组做也很简单…不过既然要小伙伴们练一练栈这货怎么用,那就老老实实地栈着吧……广告一枚…第一次尝试边边写代码…感觉还可以……回归正题,关于栈的定义,不外乎这些元素:数据存储空间,栈内元素标记以及操作函数。一个比较简明的定义如下面:template class myStack{public: myStack(int x);

2013-10-04 17:29:34 1982

原创 数据结构与算法B代码编写作业,位查询,解题报告&AC代码

终于回来了,继续写解题报告。这道题唯一的难点在于如何判断第i位是不是1,这一点可以用位运算实现。对于一个2进制数(我们举个栗子,比如11100101),当我们想查询它第i位(最低位是0)的值时,可以将它右移i位,模2即可。查询11100101的第3位,右移3位变成00011100,模2为0,即第三位数字为0。伪代码如下://num:待检测数字;i:查询位数cout >

2013-10-04 16:48:03 1562 4

数据结构与算法B代码编写作业,位查询,解题报告&AC代码

终于回来了,继续写解题报告。这道题唯一的难点在于

2013-10-04 14:07:58 142

原创 数据结构与算法B代码编写作业,字符串插入,解题报告&AC代码

唔,这道题…还是比较简单的=_____=遍历第一个字符串找出最大值,将第二个串插进去,把后面的补齐,好啦!具体算法看AC代码吧…好久没写代码了比较丑……/*ID: Moien_PodienePROG: STRINGLANG: C++*/#include #include using namespace std;int main(){ int

2013-09-25 13:00:46 1422

原创 数据结构与算法B作业二,线性表(1)

一口气继续做………1.以下哪种结构是逻辑结构,而与存储和运算无关:图循环链表顺序表双向链表这题选“图”~没啥说的……2.已知两个元素依值递增有序排列的线性表A和B,且同一表中的元素值各不相同。构造一个线性表C,其元素为A和B中元素的交集,且表C中的元素也依值递增有序排列。已知A和B的最大长度都是n。求你设计的高效算法的时间复杂度:On∗n

2013-09-21 20:21:39 3547

原创 数据结构与算法B作业一,概论

传说中的DataStructure B(Da Sha Bi)的作业~1.下列不属于线性结构的是:栈二叉树队列串这货选二叉树,剩下仨都是线性结构…没啥好说的……2.以下哪种结构是逻辑结构,而与存储和运算无关:散列表单链表顺序表线性表这货选的是线性表,单链表和顺序表(一般是数组)都是线性表。3.计算运行下列程序段后m的值:

2013-09-21 19:40:40 6322

原创 POJ 2787 算24 解题报告&AC代码

解题报告:给4个数,输出能不能通过带括号的加减乘除将他们算到245 * ( 5 - ( 1 / 5 ) ) = 24基本的思路就是挨个试,如果遍历所有数字以所有顺序由运算符连接的情形,如果有结果是24的,那就能算出来。如果没有,那就只能跟妈妈说我算不出来……这样就完成了AC代码:#include #include using namespace std;

2012-05-29 11:10:44 2305

原创 程序设计实习踩气球第八周《勇敢与鲁莽》解题报告&AC代码

解题报告:如果只是想做出来,那打表看一看50以内的情况就立即猜出来了。f[i]能整除f[j]的充要条件是i能整除j。具体的证明是一篇超长的论文……http://www.doc88.com/p-98477387710.htmlAC代码:#include int main(){    int i, j;    while(true)    {        scanf(

2012-05-29 10:39:27 678

原创 USACO Training Section 1.3 Prime Cryptarithm 解题报告&AC代码

解题报告:这道题还是比较水的,遍历两个乘数,找出符合条件的即可。细节看注释吧……AC代码:/*ID: yuanmz91PROG: crypt1LANG: C++*/#include #include using namespace std;int digitnum;bool digit[10];bool Judge(int x){ while(x

2012-05-01 22:16:23 1352

原创 USACO Training Section 1.3 Calf Flac 解题报告&AC代码

解题报告:主要方法是生长法,考虑每一位的左右各有多长的回文串,输出最长的那个,比较好想……不过要注意区分字串的奇偶。其他实现细节看代码里的注释吧……AC代码:/*ID: yuanmz91PROG: calfflacLANG: C++*/#include #include #include using namespace std;const int MAX_LEN

2012-05-01 21:34:10 6542 2

原创 USACO Training Section 1.3 Barn Repair 解题报告&AC代码

解题报告:这是一道典型的贪心法问题,贪心思路是这样的。如果只有一块木板,我们当然选择从第一个有牛的牛栏覆盖到最后一个有牛的。如果有两块呢?我们可以在第一块的基础上找到最长的一段无牛区域,然后把整个牛棚分成三份:无牛区域以前、无牛区域和无牛区语以后,这样我们用两块木板分别覆盖之前和之后就行。对于更多的木板,我们每次都做同样的事情,就可以得到最优解了。现在我们来证明一下这样做是正确的:如果我们

2012-04-24 18:19:23 1347

原创 USACO Training Section 1.3 Mixing Milk 解题报告&AC代码

解题报告:这道题估计是让大家熟悉贪心是个什么东西,红果果的贪心,把单价从小到大排一下,谁便宜买谁的。AC代码:/*ID: yuanmz91PROG: milkLANG: C++*/#include #include using namespace std;class farmer{public: int price; int amount;};

2012-04-23 10:55:06 1607 1

翻译 USACO Training Section 1.3 Greedy Algorithm 贪心算法

贪心算法例题:修复牛栏(1999年USACO春季公开赛)现在我们有一排牛栏,但其中的一些需要修复(就是拿块木板去修理),你最多能使用N(1 ≤ N ≤ 50)块木板,其中每一块木板可以搞定连续的任意个牛栏。你的任务是使用这些木板数搞定所有需要修复的牛栏,但是要使得尽可能少的本来就完好的牛栏被重复修复(就是要使得这些木板覆盖尽可能少的原来就是完好的牛栏)。想法:贪心算法最基本的思路是

2012-04-21 20:42:53 1277

翻译 USACO Training Section 1.3 Greedy Algorithm

贪心算法例题:修复牛栏(1999年USACO春季公开赛)现在我们有一排牛栏,但其中的一些需要修复(就是拿块木板去修理),你最多能使用N(1 ≤ N ≤ 50)块木板,其中每一块木板可以搞定连续的Mi个牛栏。你的任务是使用最少的木板数搞定所有需要修复的牛栏。想法:贪心算法最基本的思路是“从一个大型问题较小的部分开始解决,一步一步以至于完成整个问题”(编者说一句:这里我的理解是假如有规

2012-04-21 19:44:42 136

原创 USACO Training Section 1.2 Dual Palindromes 解题报告&AC代码

解题报告:这依然是一道可以用中规中矩方法做出来的题。我的方法是从start扫描到最大整数(2147483647,他说了不会超的么…),判断这个数是不是“双重回文”,如果是,输出这个数,计数器(就是那个输入的N)自减。当N == 0的时候,我们的工作也就完成啦。至于判断的部分,从2扫描到10,对将要处理的数x转换成每一种进制分别判断(就是第i位 ==  第(n - i)位,假设K进制

2012-04-21 19:40:00 745

原创 USACO Training Section 1.2 Palindromic Squares 解题报告&AC代码

解题报告:我用的是中规中矩的做法,读入进制,从1扫到300,每一种转一下,判断一下,如果是就输出。看起来没有没有什么陷阱…大约做出来就可以AC…特大惊喜!!!本店从今天开始写注释啦!!!~o(-_-)o~AC代码:/*ID: yuanmz91PROG: palsquareLANG: C++*/#include using namespace std;ifstrea

2012-04-20 13:32:39 623

原创 USACO Training Section 1.2 Name That Number 解题报告&AC代码

解题报告:这道题可以比较直白的办法,就是建立一个真假表格,验证是不是每一位都符合条件,一旦不符合,表格的这个位置为假,最后扫一遍表格,找出那些可以就行啦。AC代码:/*ID: yuanmz91PROG: namenumLANG: C++*/#include #include #include using namespace std;const int DICT_L

2012-04-19 21:50:36 643

原创 USACO Training Section 1.2 Transformations 解题报告&AC代码

解题报告:这道题乍一看觉得挺难,但是看到它说只会进行一次变换的时候…可以松口气了。那么接下来的工作变得轻松而…不怎么愉快…分别将7种变换(当然6、7是打酱油的)实现后,在比较一次就好啦,简单高效。下面来代码。AC代码:/*ID: yuanmz91PROG: transformLANG: C++*/#include #include #include usin

2012-04-19 21:16:44 808

原创 奇葩的新型24点游戏~~

今天看了某葱同学的人人日志…其实这个奇葩的24点游戏还挺有意思的……这张图是输出的结果……原题网址:http://blog.renren.com/blog/248552164/820688259http://blog.renren.com/share/319323058/12649683349?from=0101010202&ref=hotnewsfeed&sfet

2012-04-18 11:53:54 1113

原创 OpenJudge 2745:显示器 解题报告&AC代码

解题报告:拿到这个题目,我的第一反应就是直接模拟…我也这么做了,所以我的方法不一定是最优的,但是是可行的。基本思路即为对每一行进行处理,先看最上面一行:除了1、4最上一行为空外,其他数字最上一行皆有填充。中段,分三种情况。左有右没有:5和6。右有左没有:1、2、3和7…………这样把每一行的情况分析好了,直接输出就行了。当然还要注意:行间有一个空行,每个数字间有一

2012-04-03 16:40:43 708

原创 OpenJudge 4030:统计单词数 解题报告&AC代码

解题报嘞个告:这个题蛋疼的难以想象……先把我的失败经历放到这里大家共勉……--首次尝试--很偷懒的用string对象读入key word和article,再全转大写,逐词比较,提交之,WA。增加记录article中每两个单词中间的空格数,提交之,WA。过滤key word中的空格和换行符'\n',提交之,WA。各种小改动,怒交3次,一次RE,两次WA……--

2012-04-03 16:31:55 1332

原创 OpenJudge 4043:GPA排名系统 解题报告&AC代码

解题报告:用二维数组储存每个学生每门课的成绩,用两个整型变量分别记录每个学生选了几门课与每门课有几个学生选。再分别计算平均数,那么修正值i = 课程i平均 + 选了课程i的学生总体平均。总之没有什么槽点,没有什么坑爹的地方……下面是代码。AC代码:#include #include #include using namespace std;const int MAX

2012-04-03 16:11:10 947

原创 POJ-1006 生理周期(Biorhythms) 解题报告&AC代码

解题报告:核心思想就是取余,但是要注意答案小于21252,但是减去初始天数之前的那个“日期”是没有这个限制的。公式:绝对值(“日期”-“某项第一次高峰”) MOD “某项周期长度” == 0;注意:OpenJudge不认识abs()函数,需要include。cmath和math.h都不行,会CE。AC代码:#include #include using namespace

2012-03-30 21:55:30 822

原创 程设作业:模板

直接粘答案……1.templatevoid CLinkList::AppendNode(D data){ Node * pCur = pHead; while(pCur -> next != NULL) { pCur = pCur -> next; } pCur -> next = new Node; pCur = pCur

2012-03-30 20:58:48 437

原创 程设第二轮练习:垂直直方图 解题报告&AC代码

解题报告:数据读入+处理大致为整行读入,按每一个字符统计各个字母出现的次数,存入预先定义的数组,并比较出最大值。到这里我直接将结果输出了,我们已经知道输出必定有MAX + 1行,其中MAX为出现最多的那个字母出现的次数,1是因为最下面一行是字母表。于是我们可以对每行判断:将行标号为MAX+ 1,MAX,...,2,1。该输出第i行第j列的时候检验序号为j的字母出现次数是否达到了j,如果

2012-03-27 20:19:35 1105

原创 程设作业:文件操作作业 解题报告&弱弱的代码

解题报告:做这道题要仔细阅读老师提供的文档,熟悉了24位位图的数据规模后再读入。数据读入:对于图像数据分行读入,设置一个后移块,用于跳过每一行的补0位。数据交换:a(width - i - 1,j) = b(j,i)这里为了迎合题意,在main函数里加入两个参数int argc和char * argv[],这样可以直接从命令提示符cmd.exe中用如下图方式使用转换程序:另

2012-03-24 13:47:54 764

原创 趣味算法实习:踩气球第二周-《一道很简单的题目》解题报告&AC代码

解题报告:首先…这个题不是一般的蛋疼,第一问跟后面的处理一点关系都没有- -先说前面的处理吧:学了对数函数,我们知道:ln(x^a)=aln(x)。所以ln(x!)=Σln(i),i=1,...,x。又有:一个整数n的位数=lg(n)+1,所以我们可以用如下代码计算N!的位数:for(i = 0; i != N; ++i){ //注意!在math.h中,log()函数是以e为底

2012-03-23 20:21:31 1375

原创 程设作业:魔兽世界2:装备

直接贴代码:#include #include #include #include using namespace std;const char TIME_FILL = '0';const int TIME_W = 3;const int WAR_NUM = 5;class Warrior{public: Warrior() { }; Warrior(int hp_

2012-03-22 12:08:05 2071

原创 程设作业:MyString类

直接贴代码:这个是第一题,直接写的那个。#include #include #include #include using namespace std;class MyString{public: MyString(); MyString(char*); MyString(const MyString&); int getlen() ; char& operator

2012-03-21 18:02:52 1000 1

原创 USACO Training Section 1.1 Friday the Thirteenth 解题报告&AC代码

解题报告:这道题我用了很中规中矩的模拟,分别枚举每一年、月、日的星期(即判断每一天是星期几),判定13日。因为每一年的日期是确定的数,并且年数≤400,就算用最笨的枚举也不过是o(n)的时间复杂度,何苦构思更高效的算法呢?AC代码:/*ID : yuanmz91PROG : fridayLANG : C++*/#include #includ

2012-03-19 18:22:54 741

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除