- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在 Lisp 中,我必须创建一个执行以下操作的程序(请访问链接):
http://uva.onlinejudge.org/external/103/10328.html
我有创建树的代码
(defun head-tail (n &optional (total 0))
(if (< total n)
(list(cons 'H (head-tail n (1+ total)))
(cons 'T (head-tail n (1+ total))))
nil))
然后编写代码来检查 H = heads 的序列
(defun head-search2 (tree n &optional (total 0) (check 0))
(cond ((null tree)
check)
((listp (first tree))
(+ (head-search2 (first tree) n total)
(head-search2 (rest tree) n total check)))
((and (eq (first tree) 'H)
(>= (1+ total) n))
(head-search2 (rest tree) n (1+ total) 1))
((and (eq (first tree) 'H)
(< (1+ total) n))
(head-search2 (rest tree) n (1+ total) check))
((eq (first tree) 'T)
(head-search2 (rest tree) n 0 check ))))
最后一个函数将这两者结合起来
(defun head-check (m n)
(head-search2(head-tail m) n))
代码不适用于大量的树,任何帮助都会很棒!
最佳答案
有两个问题:
在函数 head-search2
中,cond
的第二个子句,对 head-search2
的第一次递归调用未能传播检查
。
相同的子句,第二个递归调用获取(rest tree)
作为第一个参数,这导致了额外的一层列表;它应该是(second tree)
。
就是说,您遍历了这棵树两次:第一次是在构建时,然后是对它进行计数。稍微仔细考虑一下,您只需遍历一次就可以节省大量工作,而无需显式构造它:
(defun count-n-runs (m n &optional (k n))
"Count all possible binary sequences with n consecutive 1s."
(cond ((= 0 n) (expt 2 m))
((= 0 m) 0)
((+ (count-n-runs (1- m) k k)
(count-n-runs (1- m) (1- n) k)))))
为动态规划进一步重写这个留给读者作为练习。 ;)
关于tree - Lisp 抛硬币正面序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9618615/
我目前正在做一个项目,试图开发一种用于 P2P 能源交易的货币和模型,其中每产生一千瓦时的可再生能源就会向该生产商类型转换一枚硬币。我的问题是关于销毁智能合约中的代币。 所有与我的项目类似的当前实现都
在没有Maps帮助的情况下通过Memoization解决问题,由于读取文件的方法,我得到了TLE,根据我的说法,这不应该是这种情况。可能的原因是什么? 这是给出 AC - http://ideone.
考虑下面这段伪代码,其中d是面额值数组,k是面额数,n是要进行更改的金额。 Change(d; k; n) 1 C[0] 我真的不明白这部分,你为什么要用它,谁能给我解释一下! 最佳答案 为了回答
我正在尝试在我的网站上实现 Coin Slider (http://workshop.rs/2010/04/coin-slider-image-slider-with-unique-effects/)
我有使用硬币 slider 的画廊 var $jq = jQuery.noConflict(); $jq(window).load(function() { var imhei
我使用了从该站点提取的硬币 slider http://workshop.rs/projects/coin-slider/ .它现在自动滚动并仅在悬停时显示上一个和下一个。我需要禁用自动滚动并正常显示
我的问题是一道CodeFu练习题(2012 round 2 problem 3)。它基本上归结为将整数数组分成两个(几乎)相等的两半并返回两者之间可能的最小差异。我在下面包含了问题描述。如评论中所述,
我们的老师要求我们制作一 jar 硬币,用来计算我们有多少便士、一毛钱等,然后给出总金额。 这是他希望我们使用的模板 https://online.pcc.edu/content/enforced/7
我正在尝试使用币安币 future 的 api 下载 BTC/USD 永续 future 的历史价格数据,具体来说,我想使用 this endpoint .但是,我找不到必须为 BTC/USD 指定的
我上周刚开始学习计算机科学,我们得到了一个名为“硬币”的工作表,其中我必须找出一组硬币中有多少个 25 美分、10 美分、5 美分和 10 便士。我遇到了很多麻烦,并收到了该错误。这是我的代码 pac
我正在构建一些使用消耗性硬币的测验。我使用 NSUserDefault 来保存设备上的硬币及其工作。我还在 qiuz 中使用 CloudKit 处理数据。 不麻烦的是,如果用户切换设备如何恢复硬币?有
我是一名优秀的程序员,十分优秀!