1
我不知道如何完成这项工作,也许有人可以帮助我?我想做这样的事情:将元素添加到嵌套矢量
vector<int> L[MAX_V];
for(int i=1;i<N;++i){
scanf("%d %d",&u,&v);
--u; --v;
L[u].push_back(v);
L[v].push_back(u);
}
,但在clojure语言。到目前为止,我已经配备了这样的事情,但它不工作:
(defn LoadTree []
(def n (read-string (read-line)))
(def tree (atom (into [] (repeat n []))))
(loop [x n]
(when (> x 1)
(let [input (read-string (str "[" (read-line) "]"))]
(swap! (get @tree (dec (get input 0))) conj (dec (get input 1))) <-Error
(swap! (get @tree (dec (get input 1))) conj (dec (get input 0))) <-Error
(recur (dec x))
)
)
)
'交换'应该在树直接工作(不@tree)。然后看看使用函数族中的一个:'assoc','assoc-in','update','update-in'。 –
另外,它需要说:不要在这里使用'def'!使用'let'来创建本地绑定。 – Carcigenicate
另请注意,您尝试重现的代码使用可变对象。你不应该试图直接复制这些代码,而应该试图利用不变的想法。原子和地方定义是“核选项”,你在这里使用两者。如果没有更多的上下文,你很难确切地说出你应该怎么写。 – Carcigenicate