标题:用汇编来写一个Leetcode的题目
取消只看楼主
Valenciax
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:11
帖 子:337
专家分:2462
注 册:2016-5-15
结帖率:100%
 问题点数:0 回复次数:2 
用汇编来写一个Leetcode的题目
用汇编来写一个Leetcode的题目

Leetcode的题都可以用高阶语言来刷,可惜没有汇编,但没关系,写出结果也可以,于是找了几个算是有趣来玩一下,下面是其中一个.

题目
来源:力扣(LeetCode)
链接:https://

给定n个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。



输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]
输出:6
解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1]
表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)

这题思路挺多,大家可以想一下,如何用汇编写出来?
我这里已经写了一个简单的,为了方便,不用0,1,0,2,1,0,1,3,2,1,2,1这种无聊方式,改用全图示
左右键=水平选择那条柱子,上键=加长柱子,下键=减短柱子,空白键:显示/隐藏 雨水,ESC=离开



所有按键即时生效,并显示储水格数量.

大家有兴趣可以试写一下,可以不必用图示,写出思路也可以.代码约300行,回头再发.

搜索更多相关主题的帖子: 汇编 显示 思路 表示 高度 
2021-01-31 08:39
Valenciax
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:11
帖 子:337
专家分:2462
注 册:2016-5-15
得分:0 
回复 2楼 tigerdown
嗯,其实这里没有用到绘图指令,那个实心方块和地面是ASCII的扩充字符,也是DOS页码437的区块元素(ASCII码号大于127),
在文字模式下,用字符显示函式显示就可以
MOV DL,219 ;实心=219,地面=176
MOV AH,2
INT 21H

或者在DOSBOX下,按着ALT不放,在右方的数字盘输入219,也可以显示一个实心方块

至于题目,也不难理解,就是数一下凹下去的坑中能容纳多少份水,因为两壁和坑深浅的改变,会令容水量改变.
原题目是柱子不变,长短柱子若是0,1,0,2,1,0,1,3,2,1,2,1....容水单位=6.
我只是改为柱子由用户自由改变,程式会即时计算容水单位并显示而已.

当然不必像我这像玩,也不必动态显示,能够
根据0,1,0,2,1,0,1,3,2,1,2,1...算出6
根据5,1,0,2,0,0,1,3,1,1,2,4...算出29
或者任意组合,再算出容水单位就可以.


2021-02-17 19:58
Valenciax
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:11
帖 子:337
专家分:2462
注 册:2016-5-15
得分:0 
回复 5楼 热心网友
思路不错,可以编译一下并输出结果
2022-02-18 06:30



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-504784-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.118137 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved