- 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/
我想知道我的前台表单上是否存在用户或电话, 我不等待答案,而是等待告诉我去做的事情。 我使用 Yup + Formik 来满足我的所有需求。 在我的 Sequelize 后端,我设法显示用户名或电话是
肯定按钮、否定按钮和中性按钮之间是否存在功能差异,尤其是在 AlertDialogs 的上下文中? 最佳答案 只是他们在对话框中的位置...... 在 Honeycomb 之前的设备上,按钮顺序(从左
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 9 年前。 Improve
我的客户买了一个 PositiveSSL 证书,他给了我 2 个文件,crt 和 ca-bundle。 如何将这些文件安装到 ubuntu 服务器并使 https 协议(protocol)工作? 仅供
我正在使用 NLTK 在 Python 中设计一个文本分类器。每个句子中考虑的特征之一是它的情绪。我想比那些没有任何情绪的句子(中性句子)更加权具有积极或消极情绪的句子。使用电影评论语料库和朴素贝叶斯
使用 Plotly,我可以轻松绘制单条线并填充该线和 y == 0 之间的区域: import plotly.graph_objects as go fig = go.Figure() fig.add
(注意:有一些类似的问题,但我找不到完全重复的问题) 问题 考虑抛硬币任意次数。在得到 3 个反面之前得到 2 个正面的概率是多少? 代码 为了模拟这一点,我设置了 10000000 次试验,其中 0
我有一个关于三个 JS 的问题。 fiddle https://jsfiddle.net/syildiz/fk8thLsq/17/ 我想创建一个跟随鼠标移动的眼睛。我上传的图片同时在背景中可见,并且在
我想将 countup.js 与自动 css 格式(颜色)相结合。我有以下三个条件的地方: 如果小于 0 则为红色 如果等于 0 则为黑色 如果大于 0 则为绿色 sample file包含三个数字(
s = "some {text|in|braces} found" 获取大括号之间的内容 s.scan(/(? ["text|in|braces"] 现在要获取不在大括号中的内容,我试过了 s.sca
我正在尝试使用 Stanford Core NLP 检查一个陈述是肯定的还是否定的。 我在网上找到了一些 Java 引用资料,并且能够将缺失的部分转换/编码为 C#。 在尝试获取情绪分数时 - 我总是
我是一名优秀的程序员,十分优秀!