zixuan203344
发表于 2020-3-7 15:55:21
tryhi 发表于 2020-3-1 20:14
啊,什么群,C#学不来啊
221746390
我是群主,我们以前的小伙伴基本都在里面,你把消息屏蔽了吧?
masterlong
发表于 2020-3-8 14:16:55
我就知道此贴必能引出mahuan兄
mahuan1279
发表于 2021-4-15 20:07:05
本帖最后由 mahuan1279 于 2021-4-15 20:10 编辑
tryhi 发表于 2020-3-1 15:13
看来还是递归适合解决这种问题,只是当数量达到100个时,运行时间要达到几十秒甚至超过1分钟,而当数量为 ...
(defun tt(lst)
(defun f1 (plst j num)
(setq ij -1)
(setq plst (mapcar '(lambda (x) (if (= (setq ij (+ ij 1)) j) num x)) plst))
)
(setq n (length lst) i 0 ans 0 vlst '(nil))
(repeat n (setq vlst (cons nil vlst)))
(while (< i n)
(setq l 0 r ans)
(while (< l r)
(setq mid (/ (+ l r) 2))
(if (<= (nth mid vlst) (nth i lst))
(setq l (+ mid 1))
(setq r mid)
)
)
(setq vlst (f1 vlst l (nth i lst)))
(if (= l ans) (setq ans (+ ans 1)))
(setq i (+ i 1))
)
(setq vlst (reverse (vl-remove nil vlst)) alst (reverse lst) blst (list (+ 1 (car vlst))))
(whilevlst
(if (and (>= (car alst) (car vlst)) (<= (car alst) (car blst)))
(progn
(setq blst (cons (car alst) blst))
(setq vlst (cdr vlst))
(setq alst (cdr alst))
)
(setq alst (cdr alst))
)
)
(reverse (cdr (reverse blst)))
)
_$ (tt '(0 0 2 4 1 5 1 3 1 2 0 8 9 10 4 6))
(0 0 1 1 1 2 8 9 10)
_$(tt '(0 0 2 4 1 5 1 3 1 2 0 8 9 10 4 6 7))
(0 0 1 1 1 2 4 6 7)
_$ (tt '(5 1 3 2 0 8 9 10 4 6 7))
(1 2 4 6 7)
_$ (tt '(3 5 4 6 10 0 1 9 8 2 7))
(0 1 2 7)
_$ (tt '(0 1 9 10 2 3 4 5 6 8 7))
(0 1 2 3 4 5 6 7)
_$ (tt '(6 1 0 3 11 10 4 5 8 9 2 7))
(0 3 4 5 8 9)
_$