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