首页
归档
朋友
留言
更多
关于
Search
1
2021年总结
3,726 阅读
2
大半年
3,552 阅读
3
最近的一些游戏
3,412 阅读
4
艾尔登法环
3,247 阅读
5
第一次半马
3,023 阅读
默认分类
学习
生活
游戏
小说
登录
Search
标签搜索
CPP
Git
宁滥无缺
累计撰写
55
篇文章
累计收到
8
条评论
首页
栏目
默认分类
学习
生活
游戏
小说
页面
归档
朋友
留言
关于
搜索到
55
篇与
的结果
2019-09-18
二叉树三种遍历六种实现
/*二叉树的遍历* 2011.8.25*/ #include <iostream> #include<string.h> #include<stack> usingnamespace std; typedef struct node { char data; struct node *lchild,*rchild; }BinTree; typedef struct node1 { BinTree *btnode; bool isFirst; }BTNode; void creatBinTree(char*s,BinTree *&root) //创建二叉树,s为形如A(B,C(D,E))形式的字符串 { int i; bool isRight=false; stack<BinTree*> s1; //存放结点 stack<char> s2; //存放分隔符 BinTree *p,*temp; root->data=s[0]; root->lchild=NULL; root->rchild=NULL; s1.push(root); i=1; while(i<strlen(s)) { if(s[i]=='(') { s2.push(s[i]); isRight=false; } elseif(s[i]==',') { isRight=true; } elseif(s[i]==')') { s1.pop(); s2.pop(); } elseif(isalpha(s[i])) { p=(BinTree *)malloc(sizeof(BinTree)); p->data=s[i]; p->lchild=NULL; p->rchild=NULL; temp=s1.top(); if(isRight==true) { temp->rchild=p; cout<<temp->data<<"的右孩子是"<<s[i]<<endl; } else { temp->lchild=p; cout<<temp->data<<"的左孩子是"<<s[i]<<endl; } if(s[i+1]=='(') s1.push(p); } i++; } } void display(BinTree *root) //显示树形结构 { if(root!=NULL) { cout<<root->data; if(root->lchild!=NULL) { cout<<'('; display(root->lchild); } if(root->rchild!=NULL) { cout<<','; display(root->rchild); cout<<')'; } } } void preOrder1(BinTree *root) //递归前序遍历 { if(root!=NULL) { cout<<root->data<<""; preOrder1(root->lchild); preOrder1(root->rchild); } } void inOrder1(BinTree *root) //递归中序遍历 { if(root!=NULL) { inOrder1(root->lchild); cout<<root->data<<""; inOrder1(root->rchild); } } void postOrder1(BinTree *root) //递归后序遍历 { if(root!=NULL) { postOrder1(root->lchild); postOrder1(root->rchild); cout<<root->data<<""; } } void preOrder2(BinTree *root) //非递归前序遍历 { stack<BinTree*> s; BinTree *p=root; while(p!=NULL||!s.empty()) { while(p!=NULL) { cout<<p->data<<""; s.push(p); p=p->lchild; } if(!s.empty()) { p=s.top(); s.pop(); p=p->rchild; } } } void inOrder2(BinTree *root) //非递归中序遍历 { stack<BinTree*> s; BinTree *p=root; while(p!=NULL||!s.empty()) { while(p!=NULL) { s.push(p); p=p->lchild; } if(!s.empty()) { p=s.top(); cout<<p->data<<""; s.pop(); p=p->rchild; } } } void postOrder2(BinTree *root) //非递归后序遍历 { stack<BTNode*> s; BinTree *p=root; BTNode *temp; while(p!=NULL||!s.empty()) { while(p!=NULL) //沿左子树一直往下搜索,直至出现没有左子树的结点 { BTNode *btn=(BTNode *)malloc(sizeof(BTNode)); btn->btnode=p; btn->isFirst=true; s.push(btn); p=p->lchild; } if(!s.empty()) { temp=s.top(); s.pop(); if(temp->isFirst==true) //表示是第一次出现在栈顶 { temp->isFirst=false; s.push(temp); p=temp->btnode->rchild; } else//第二次出现在栈顶 { cout<<temp->btnode->data<<""; p=NULL; } } } } void postOrder3(BinTree *root) //非递归后序遍历 { stack<BinTree*> s; BinTree *cur; //当前结点 BinTree *pre=NULL; //前一次访问的结点 s.push(root); while(!s.empty()) { cur=s.top(); if((cur->lchild==NULL&&cur->rchild==NULL)|| (pre!=NULL&&(pre==cur->lchild||pre==cur->rchild))) { cout<<cur->data<<""; //如果当前结点没有孩子结点或者孩子节点都已被访问过 s.pop(); pre=cur; } else { if(cur->rchild!=NULL) s.push(cur->rchild); if(cur->lchild!=NULL) s.push(cur->lchild); } } } int main(int argc, char*argv[]) { char s[100]; while(scanf("%s",s)==1) { BinTree *root=(BinTree *)malloc(sizeof(BinTree)); creatBinTree(s,root); display(root); cout<<endl; preOrder2(root); cout<<endl; inOrder2(root); cout<<endl; postOrder2(root); cout<<endl; postOrder3(root); cout<<endl; } return0; } //深度遍历用栈,广度遍历用队列
2019年09月18日
1,018 阅读
0 评论
0 点赞
2019-09-04
火焰纹章风花雪月
[Meting][Music server="netease" id="1380869138" type="song"/][/Meting]虽然是我不喜欢的策略战棋类,但不得不说,高清化的火纹,加上P5类似的养成系统,RPG的元素使得战棋变得更加有趣味。剧情穿插在这些元素中间,光荣的技术还是不错,原有的火纹立绘什么的也十分出色,无愧于IGN的高分。难度也降低了不少,很适合新人入坑。伙伴支援系统让人有种被NTR的感觉。某些元素感觉也太过重复了。慢慢打吧,还挺长的,等待下个周末可惜明天要上班,不然我真恨不得通宵打完剧情,到了高潮的部分然而玩到五年后的部分,感觉编剧还是和我当初玩另一个英雄王一个尿性,就是日本人最喜欢的那种套路?感觉就很无脑。而且重复的内容太多了,和P5的自由选择是完全不同的感觉,终究这还是个战棋为主的游戏,最精华的部分还是很有意思的,即使相比于之前的作品难度大大下降但对于我这种新手和策略苦手来说还是有一定挑战性(主要是死了队员就很难受)打完了,感觉被欺骗了,什么风花雪月,全程就是养成和战斗。最后选择结婚角色,结果就一张CG就没了??????后日谈什么的都没了,结局还是文字叙述也太偷懒了吧。确实还是以战斗为主的游戏,如果喜欢SRPG,这确实不错,只是与我期待的P5那种有点相去甚远了。有时间还是抽空把金鹿线打完把,只是不知道要等到什么时候了
2019年09月04日
1,042 阅读
0 评论
0 点赞
2019-08-26
递归解决二叉树构建
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。TreeNode* reConstructBinaryTree(vector<int> pre,vector<int> vin) { int vin_len=vin.size();//中序序列长度 if(vin_len==0)//空结点返回给上一层叶结点NULL return NULL; TreeNode* root=new TreeNode(pre[0]);//拿前序第一个节点创建根 //存当前树左子树的,前序、中序 vector<int> left_pre; vector<int> left_vin; //存当前树右子树的,前序、中序 vector<int> right_pre; vector<int> right_vin; //由前序的根找到其在中序的位置 int mid=0; for(int i=0;i<vin_len;i++) { if(vin[i]==pre[0]) { mid=i; break; } } //将当前树左子树的,前序、中序放到对应的vector中 for(int i=0;i<mid;i++) { left_pre.push_back(pre[i+1]); left_vin.push_back(vin[i]); } //将当前树右子树的,前序、中序放到对应的vector中 for(int i=mid+1;i<vin_len;i++) { right_pre.push_back(pre[i]); right_vin.push_back(vin[i]); } //将左子树、右子树,挂在当前树两边(递归) root->left=reConstructBinaryTree(left_pre,left_vin); root->right=reConstructBinaryTree(right_pre,right_vin); return root; }
2019年08月26日
1,056 阅读
0 评论
0 点赞
2019-08-22
转载:周易的解读
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/Zjhao666/article/details/89714352有一些道理,永远有效;有一些书籍,终生受益;有一些师友,没世难忘。——题记 看此书的起因主要源于对未知的好奇。中国人对于周易、八卦等事物等最初印象多起源于道馆等风水算卦之地,那个简单但韵味无穷的两仪图,人见了应该都会终生难忘。韩国的国旗、孔明后人的村庄、尼尔斯玻尔的爵士徽章,今天世界的风云事物,皆起源于几千年前伏羲、文王等人的努力。人间有什么事物的恒久,能比得上传承千年的文明呢?能传承千年的事物,又是凭借着什么呢?千年之前的人著书立言,为何千年之后的人仍旧奉为圭臬呢?这一切的谜底,都在这一道道爻迹,一篇篇卦辞中。对太极八卦的肤浅理解如果是有心之人就会发现,二仪四象八卦六十四卦,都是二的倍数,这是因为他们之间的先后衍生关系。爻是一条横线,连续则为阳爻,断开则为阴爻。三要并放则为八卦中的一卦,两卦相叠则为六十四卦中的一卦。不同的方位对应八卦中不同的卦象,这其实和西周之前的古代中华文明和华夏地形地理有着极深的渊源。阳爻代表刚强、正直、前进的如火一般的力量。 阴爻代表阴柔、包容、守成的如水一般的力量。 我们很难说阳好还是阴好,正如我们很难证明水的力量大还是火的力量大一般。胜败是变化的,强弱是相对的。对六十四卦的肤浅理解正如前文所言,八卦中的两卦相叠则为六十四卦中的一卦,因此共有六爻,从下至上,次序分别为初、二、三、四、五、六。根据该爻为阴或者为阳,则对应为六(阴)或者九(九)。如初六、九五等。六爻上下依照八卦为界限,上三爻为一卦,下三爻为一卦。从低至高最理想的顺序依次为阳(初)、阴(二)、阳(三)、阴(四)、阳(五)、阴(六)。阴爻居阴位或阳爻居阳位称为居位得正,反之则为不正。上三爻下三爻分别对应不同的等级。下三爻一般指中下层,上三爻一般指中上层。其中,九二或者六二为下三爻之尊,九五或者六五为上三爻之尊。这上下六爻其实代表着不同的社会阶层,或者说权力等级。从权力的等级来看,如果说下三爻是中下层领导到普通百姓的话,上三层可大致理解为省部级高官到国家级领导人。 从发展的角度来看,如果说下三爻是事物发生的初期到早期阶段的话,上三爻则大致为事物发展的中期到晚期阶段。 不同的卦象由于上下六爻的形状、位置、相对关系的不同,则其意义也是各领风骚。以泰卦为例,上三爻为坤,代表地;下三爻为乾,代表天。天下而地上,则寓意相互交融,和泰吉祥。周易认为,万物以运动交融为吉,以静止僵化为凶,这无论从政治意义还是从养生健康的角度来看,都是极为科学的。再来看看泰卦九二的爻辞。九二,包荒,用冯河,不遐遗。朋亡,得尚于中行。 意思是:九二,犹如天地包容八荒,用这种胸襟可渡长河,也可广纳远方贤者,不结党营私,能得到行事中正的君王赏识。 因此,这一卦实际上是告诫我们要包山容海,要有大家风范。所以,卦象不仅仅是六条爻,每一个卦的背后都有着其生活实物,每一个爻的背后都有其深刻哲理。八乘八为六十四,故共有六十四个卦象,在此就不一一列举。周易想要我们做到什么这其实是一个很难回答的问题,但也是一个必须回答的问题。因为每一本书的作者都是有所图,有所指才会著书立言,否则就是浪费墨水。我只是个年轻人,我个人的总结大致如下: 不偏守中 审时度势 处变不惊 厚积薄发 从善如流 乐天知命 自强不息 厚德载物 仔细阅读周易就会发现,周易并不是所谓瞎编,更不是玄学,这实际上是对生活的领悟和对人生的思考。它并不偏激,也不武断。它总是劝人行善守中,总是劝人审时度势。从某种意义上讲,周易就像一个老婆婆,对即将远行千里的游子,用生活中的实物举例,将自己毕生的经验教导给他,以希望其少走弯路,多走正道;少说空话,多做实事;少结孽缘,多种善根;少亲小人,多交君子。 每个人都是生活的行者,都是时间的过客。我们在时间长河中行走,或希望不负此生,或希望留下些印记。但是,在真正的智慧面前,谁又不像个愚夫?在浩瀚的天地之间,谁又不像个婴儿。周易,无时无刻不在警告作恶的人们,逆天而行的结果就是自取灭亡;在鼓励逆境中的人们,路虽艰辛但前途光明;在告诫耍小聪明的人们,自作聪明终将世人皆知;在安慰失意时的人们,逆来顺受才能海纳百川。因此,人要从善如流,乐天知命故不忧。周易特别注重人要守中,不识时务者对其嗤之以鼻。但这又是各家之言了——周易称其为守中,数学称其为收敛,物理称其为稳定,化学称其为守恒,孔子称其为过犹不及,老子称其为多言数穷,经济学称其为边际效益递减,人工智能称其为无过拟合。所以,中庸之道实际上是智者的共识。周易为什么能够得到海内外人士的高度评价和广泛认可?也许,从计算机的角度可以解释。计算机语言有底层语言、汇编语言和高级语言。底层语言是运行在机器上的零壹二进制编码,汇编语言和高级语言需要翻译成底层语言才可在机器上运行。从这个意义上看,人的感觉、情感相当于直接运行的机器语言,自然语言、语法则相当于汇编语言,而宗教、法律则相当于高级语言。周易用天地山水、风雨雷电等事物给人说理,实际上就是用人看到的司空见惯的东西进行说理,这就是直接用人们共同的感觉、情感在给人上课,相当于直接用机器语言跑程序,运行能不流畅吗?速度能不快吗?这就是真正的推己及人,智慧的普度众生。 现在再回头看看那些给我们算卦的人们,我们又会想到什么呢?人不能给其他人任何人算卦,因为他根本不了解其他任何人,他只能了解自己,因此也只能给自己算卦。算卦也许听起来是个贬义词,但儒家叫它三思,佛家叫它参禅,道家叫它占卜,兵家叫它运筹。我们的思考不是为了别的,而正是实事求是地分析、竭尽所能地推演,以期结局与目的一致、人为与天道相合。我们可以清楚的明白,不存在“顺我者昌,逆我者亡”。说这话的人,终将死去,而“顺之则昌,逆之则亡”的,只能是天道。也许天道太过玄幻,其实说白了就是事物联系变化发展的一般规律。按规律办事的人往往比无章法之人走得更远,也走得更好。也许我是在胡说八道吧,哈哈哈哈……
2019年08月22日
1,010 阅读
0 评论
0 点赞
2019-08-22
上班之余
最近mentor的任务一个接一个,上班时间都被写代码和debug占满了,用的还是我不不太熟的Python。本来想最近上班看看书的,结果有点空闲时间就放松玩手机了。感觉其他实习生一走我就变得很忙买个抱枕方便在单位午睡再说,mentor人很好deadline应该还是比较宽松,而且她应该其实也不是太懂python本来苏杭在的时候两个人基本不做什么事天天摸鱼,旁边都是留学的PPhD大佬让人生出深深的自卑感。。。
2019年08月22日
1,028 阅读
0 评论
0 点赞
1
...
7
8
9
...
11