藏书吧 通过搜索各大小说站为您自动抓取各类小说的最快更新供您阅读!

谢维康突然一拍桌子,喝道:“有了!”

这一嗓子把小哥惊得一个激灵,他忍不住骂道:“别一惊一乍的,吓我一大跳!快说,你想到什么办法了?”

谢维康指着屏幕上的迷宫,说道:“你仔细看,你这些迷宫,周围是不是都围着一圈墙?”

小哥紧盯着屏幕,目光跟着谢维康的手指移动,顺着他的话细细思索。

谢维康的手在屏幕上滑动,继续分析道:“你看,这圈墙后面是路,路后面又是墙。也就是说,在这个二维平面里,垂直方向第一列是墙、第二列是路、第三列是墙、第四列是路,以此类推,奇数列是墙,偶数列是路。水平方向也是一样,没错吧?”

小哥领会过来,轻轻点了点头。

“而且你的起点和终点,都开在这最外圈的墙上,中间的路也连通着墙。”谢维康接着说道,“我有个想法,你听听行不行?”

见谢维康停了下来,还直盯着自己,小哥急道:“你快说啊,别卖关子了,我都快愁死了!”

谢维康解释道:“首先,这些地图的宽度和高度必须是奇数行、奇数列。你先生成一圈墙,再定好入口和出口,接着从入口开始生成路。用0、1、2、3四个数字表示前进方向,每次往前走两步就生成一个节点,做好标记,再用随机数确定下一步方向。这样一来,这些节点就是迷宫里的路。要是当前方向的下一个节点已经有标记,说明这条路走不通,得转弯;要是前进方向的前、左、右三个方向都有标记,那就是死路。之后你扫描整个地图数据,找到未标记的节点,这个节点周围四个节点里,肯定有一个是已标记的。从这个已标记节点开始,往未标记节点继续重复上面的流程,直到扫描完整个地图、找不到未标记节点为止。这些连在一起的节点就是迷宫的路,剩下的就都是墙。最后根据这些数据把迷宫画出来就行。”

小哥的眉头皱得更紧,显然还没完全听明白。

谢维康见状,到吧台借了纸笔,在纸上随便画了个小迷宫,一边在里面画线,一边接着解释。

最后他总结道:“我的意思是,你别管墙不墙的,就当地图上有隐形的墙,奇数行列上的点全是墙。你要做的,就是模拟从入口到出口的过程,遍历整个地图,能穿透这些隐形的墙,找出所有能走的路。既然所有能走的路都找到了,剩下的不就全是墙了吗?”

这番解释让小哥豁然开朗,他一边点头一边重复并总结谢维康说的方法:“哦,我懂了!你是说从入口开始找路,遇到死路就回头换条路,一直找,直到把全地图的路都找出来,对不对?”

谢维康松了口气,总算能顺着这个话茬往下说。

可小哥又冒出新问题:“那怎么确保这条路能和出口连上呢?”

“首先,你设置入口和出口时,它们的行号或列号必须是偶数。”谢维康解释道,“这样一来,入口和出口肯定能和路的节点连上,两者之间至少会有一条通路。至于会不会有第二条通路,我就不确定了,毕竟我没写过这么复杂的逻辑。”

说到这儿,他故作深沉地纠正道:“哦对了,我刚才有个地方说错了。c语言的数组下标是从0开始的,所以奇数行列对应的数组下标其实是偶数。”

小哥当即给谢维康竖了个大拇指:“嚯,原来可以通过搜索路来确定迷宫数据呐?我之前一直死磕迷宫的墙,你说,我怎么就没想到这个方法呢?刚刚听你这么一分析,我现在是茅塞顿开!”

话音刚落,他就不管谢维康,自己埋头忙活起来。

谢维康看了看时间,已经不早了,他点开qq,李梅还是没回复消息。

虽说他一直告诉自己,已经把对李梅的感情压在心底,可此刻还是忍不住露出一丝失落。

他利索地收拾好物品,关掉电脑,跟小哥道别后,离开网吧回了家。

……

翌日下午收工后,谢维康又去了网吧,刚在电脑上开始下载安装Vc++6.0,就有人从后面拍了拍他的肩膀。

他转头一看,正是昨晚遇到的那个小哥。

小哥拍着他的肩膀,笑容灿烂地夸道:“兄弟,你可真有两下子!昨天你走后,我按你说的方法写了段代码,居然真成了,我给你看看……”

说着,小哥打开谢维康右边的电脑,往主机上插了个小东西,接着在“我的电脑”里点开一个文件夹,没一会儿就把Vc++6.0装好了。

谢维康疑惑地问:“你插在电脑上的这是什么?怎么没见你下载,Vc++6.0就装上了?”

小哥一边摆弄电脑,一边回答说:“哦,你说这个啊,这是U盘,用来存数据的。”

谢维康觉得这东西不错,又追问道:“多少钱一个?”

“我这个是128mb的,花288元买的。”小哥解释说。

谢维康惊呼道:“啥?288元?这么贵?”

小哥看了他一眼,继续说道:“我买得早,现在256mb的差不多也就这个价。”

可这个价格还是让谢维康吓了一跳,就这么个小玩意儿,得他在装修工地上辛辛苦苦干八九天活才能买到。他暂时打消了买U盘的念头。

小哥装好Vc++6.0后,打开自己写的代码,指着屏幕说道:“你看,这就是我写的代码。按你说的思路写完后,只要在右键菜单里执行一个命令,一秒钟就能生成一个迷宫,感觉比我自己画的还合理。”

说着,他按下F5,屏幕上弹出一个窗口。他熟练地操作着界面,点了几下后,右键调出菜单,搓着手对谢维康说道:“来了哟,兄弟,见证奇迹的时刻到了,你看……”

话音未落,他用鼠标点了一下菜单里的命令。不到一秒钟,屏幕上就出现了一个和他之前画的差不多的迷宫。

小哥激动地喊道:“兄弟,我太爱你了!”

说着就要往谢维康身上扑,谢维康赶紧拦住他,用力推开,抱怨道:“哎哎哎!你干什么?两个大男人在公共场合搂搂抱抱的,像话吗?跟你说,我是有女朋友的,不搞基!你这一激动,我差点‘贞洁不保’了!”

小哥没把他的抱怨当回事,伸出手自我介绍道:“兄弟,我叫段雷,是成都理科大学的学生。还没请教你的尊姓大名?”

谢维康伸手和他握了握,介绍道:“我叫谢维康,已经没上学了。”

段雷疑惑地问道:“没上学了?那你编程技术怎么这么好?”

谢维康心里满是委屈,自己就随便跟他聊了几句,怎么就帮他把这么个难题解决了呢?这也太不科学了。

但他嘴上还是谦虚地说道:“哪里哪里,我就是随口一说,一行代码都没写,这都是你自己写出来的。”

段雷却伸出食指摆了摆,解释道:“不不不,你说得不对,你虽然没帮我写一句代码,但你给我的算法让我豁然开朗,要是没有你提供的这个算法,我也没法这么快解决这个问题,所以你功不可没。”

谢维康反问道:“算法?什么是算法?”

段雷看着他,不知道这家伙是真不懂还是装糊涂,疑惑地问道:“你不知道什么叫算法?”

谢维康茫然地摇了摇头。

段雷拍了拍自己的额头,虽然无奈,但还是耐心地解释道:“学编程,本质上是培养逻辑思维,总结出算法,最后把算法转换成代码。”

谢维康还是一脸茫然,显然没听懂这句话。

段雷见状,换了个方式问道:“我问你个问题,要是让你算5和3的和等于多少,你会想到什么办法?”

谢维康脱口而出说道:“这简单啊,把5和3加在一起就行了!”

“没错。”段雷说,“我们的问题是算5和3的和,你说的‘把5和3加在一起’,用语言描述出来的这个方法就是算法。接下来,我们写下‘5+3=8’这个算式,这就相当于是代码。”

谢维康似乎懂了些,点了点头,低头琢磨起来。

段雷继续说道:“小学时我们经常做应用题,比如‘一个施工队修公路,5天修了全程的25%,问修完这条路需要多少天’,这种题你做过吧?”

谢维康点头道:“当然做过,还做了不少。”

“那你当时是怎么做的?”段雷问。

谢维康回忆道:“我记得老师教过一个方法,画一条线段,在大约25%的位置画个点,上面写天数,下面写百分比,然后用天数除以对应的百分比,就能算出修完全程需要的天数。”

“看来你们老师教得不错。”段雷说,“他让你画的线段图,也是一种算法。根据这个线段图,最后得出‘用天数除以对应百分比,得到全程天数’的结论,把这个结论对应的过程用代码语句写出来,就是程序。简单说,遇到问题时,别先想着写代码,要先想怎么解决问题,不管是用语言描述,还是画图,这些解决方法都是编程里的算法。”

谢维康这下彻底豁然开朗,笑着对段雷说道:“哦,你说得有道理!没错,得先把算法描述出来,才能写出代码,就是这么回事!”

接着,他指着段雷的代码问道:“哎,你这个数组怎么这么奇怪?下标后面怎么还有个点?后面的data是什么意思?”

段雷用看“白痴”的眼神看着他,不解地问道:“这是结构体啊,你连这个都不会?”

谢维康挠了挠头道:“结构体?我觉得这东西没用,就没当回事。”

“你可拉倒吧!”段雷不屑地说,“结构体这么有用的东西,你居然说没用?”

“那你这么写,有什么意义啊?”谢维康追问。

段雷解释道:“你昨天不是自己说的吗?用一个标记记录节点状态。这个index就是标记,data是地图数据,map是结构体的变量名。”

谢维康又有了新疑惑,问道:“那我直接定义一个数组存地图数据,再用一个数组存标记,不也一样吗?”

“一点都不一样。”段雷继续解释道,“你看,我这个结构体有index和data两个成员,说明它有两种属性。我把它定义成map的类型,那每个map就都有这两种属性。就像一个人,同时有姓名、性别、年龄、身高、体重这些属性。每个结构体变量就好比一个人,提取信息时,能一次性拿到他的姓名、性别、年龄这些所有属性。而且传递参数时,只要传一个结构体变量名,函数就能获取这个结构体的所有属性。当然,一般情况下我们不直接传结构体本身,而是传它的指针。”

谢维康恍然大悟:“哦,原来是这样!我懂了。看来你这种科班出身的,和我这种‘野生’学编程的,确实不一样。”

段雷毫不避讳地说道:“那当然!你学编程花了多少钱?我妈供我上大学,每年光学费就五千多,还不算生活费。”

谢维康点头表示理解:“也是,我要说花钱,也就买了两本编程书而已。”

弄明白结构体的意义后,谢维康又冒出新问题,继续问道:“我刚刚听你说了‘指针’,不知道这‘指针’又是什么东西?”

段雷盯着谢维康看了足足十秒,谢维康下意识摸了摸自己的脸,还以为脸上沾了什么脏东西。

最后,段雷没好气地说道:“你的问题也太多了,自己看书去!”

说完,他转头自顾自写代码去了。

谢维康撇了撇嘴,倒也接受了这个建议,自嘲道:“看来书还是看得不够仔细,也是,大师写的教材里,肯定没多少没用的知识点,以后看书得更认真,一点都不能跳过。”

接着,他转向段雷,提议道:“段大哥,咱们能不能加个qq好友?以后我要是有问题,还能问你。”

段雷爽快地答应道:“哦对,加个qq!别的不说,你有问题我肯定帮你。”

谢维康拍了拍他的肩膀,调侃道:“那以后你可别嫌我烦啊。”

段雷也拍了拍他的肩膀,爽快的应道:“没问题,以后哥罩着你!”

说完,两人都哈哈大笑起来。

之后,谢维康把结构体那一章重新学了一遍,还自己写了些代码练习,巩固知识点。

眼看时间不早了,他又看了眼qq,李梅依旧没有任何回复。

谢维康跟段雷道别后,便回家了。

藏书吧推荐阅读:先婚后爱,冰山傅总对她上瘾反派弟子全舔狗?摆烂师尊浪浪浪貌美继室摆烂后,禁欲权臣他慌了穿书七十年代:开局多一个老公时来允转重生之我在直播间卜卦续命被卖后,她只想苟在一亩三分地上穿越从一拳开始闺蜜双穿!我们真的只是朋友!重生后,偏执世子对我死缠烂打jojo:DIO兄妹的不妙冒险逃荒:有粮有钱心不慌四合院:万倍经验暴击,众禽慌了御厨重生:苏禾的现代美食传奇末世重生,开局打造顶级安全屋菜鸟杀手日常苟命顺手破案郁爷老婆总想回娘家炮灰一身反骨,为了续命嘎嘎舔快穿带娃:开局精神控制躺赢末世我靠捉鬼发家致富跟男主的病弱小叔互换身体后迟来的深情,我不要了!史莱姆的我捕捉小舞不过分吧穿越农家种田遇上王爷灵异悬疑小说集张起灵!回头!亮平破碎信念同伟钟小艾越界冲击海岛求生:我靠捡垃圾成神满门殉国你悔婚,我娶嫂嫂你哭什么?快穿精灵梦叶罗丽穿越到乱世,种田种成了女帝快穿之旅,创世神追妻无下限掀饭桌!小疯批夺回气运后不忍了花瓶主母的自我修养海贼:宇智波的航行偷听心声后,垫脚石家族杀疯了斗罗之月轩交流生何其自性,能生万法低调修仙摆不起,老六竟是我自己父母爱情:江卫民的躺平生活逗比仙警与冷硬罪犯游请神临花语剑心重生后,成了清冷首辅前夫白月光我家顾总是个炫妻狂魔穿越成伯爵小姐我的爸爸是最终BOSS我和死对头在语音厅硬碰硬江少的心尖宠:又乖又野【原神】我在时空中寻找爱的血肉
藏书吧搜藏榜:野玫瑰欲又撩,太子爷失控诱捕我爹哪去了菟丝绕红缨玄学直播捉鬼忙,看看今晚谁塌房两只虫崽在垃圾星的日常生活乖乖的,不许逃没错,我的卡牌是辛弃疾怎么了我一个小刑警,你让我当鬼差帝少动情,顾大小姐三年抱俩离婚后她空降热搜末世:探寻龙头脉无限:开局成为海虎之弟南宫轩与上官洛儿倾城之恋爷,您夫人又管不住了月华倾心遮天之阴阳道以前上班的不成功日记人在斗罗,开局觉醒时间零美女天才中医与黏人总裁综穿:捣乱从甄嬛传开始恋综爆火后,哥哥他坐不住了海贼里的龙珠模拟器平安修行记蚀骨情深,顾总他上头了四合院:精神病面前禽兽算个球斗罗:佛道双魂,我玩转诸天横空出世的娇帝君火葬场女工日记骑行异事重生端木,我不吃牛肉我,赤犬大将,开局轰杀逃兵王废物公子神豪富婆,这点小钱洒洒水啦姐弟恋:好想和你一起长大女孩子会喜欢逗比的吧?不是吗?唉!又是一天把亲爹气的直跺脚!时不时吐血的我在柯南身边怎么活锦鲤四岁半捡的妹妹超旺家七零军婚:重生后被兵哥哥盯上了如意茶馆叶罗丽之重生归来,我依旧爱你当我在火影成为空律洪荒:我袁洪一心求稳,人间清醒带着抽卡系统穿综漫完了!订婚前夜禁欲战神闯我闺房女配给大反派生孩子后,男主疯了最后的任务,许我为妻我重生成为了曙光圣者崩坏:成为梅比乌斯的妹妹明月揽星辰
藏书吧最新小说:无敌师尊之林风综武:仙子们都是我签到机缘四合院:傻柱,有种你再说一遍长生仙途:从苟在空间种田开始疯批男主有病,原女主嫌弃我要!铠甲勇士,从酷雷伏铠甲开始穿进原神后,我妈杀疯了!碎在玻璃糖纸里的光原神:失忆后,她们成了我的翅膀综漫:幻想卡牌斩神:神约下,众生等!夭寿啦,这是猛鬼旅行团清冷师尊即将坐化,徒弟强吻回血万人迷小姐,请停止放电凰权之上:女帝武则天的贴身暗卫人在异世,我绝不陷于温柔乡精灵:我,赤红,白银山的传说石纪元:界外来音昆仑玄真录清穿复仇,大佬助我谋禛心九叔:闭关三百年,我成茅山老祖渣男全家白眼狼?重生他们哭断肠掌御神帝青君快穿之龙主的快穿之旅快穿万人迷:美人她又撩疯了刚成仙,你说这里是洪荒?港综:我的横刀能砍穿铜锣湾鬼谷之纵横穿越60年代,我靠捡漏成了首富寒刃旧青囊重生后拒离婚,糙汉老公不禁撩穿越到玫瑰的故事中,我杀疯了凡人修仙:修仙葫芦我继承了魔女的百万遗产欢迎你们来到童话小镇重生祁同伟:汉东一把手我当定了世界纪元:次元直播间之不屈之歌早死大师兄重生,整顿宗门白眼狼噬灵劫火:我以凡人之躯弑仙摄政王,夫人她又拆家了终极一班之纵横天下万界公馆:我在剧情里开安全屋综影视:不知名迷人角色军婚燃情:七零辣妻养崽忙重生港综开出租,开局送阴阳眼换亲劫获得转化桌的我,拐跑芙宁娜四合院:傻柱他舅来了,逆天改命终焉回响:罪爱漩涡