因此,我使用遞歸回溯創建迷宮生成算法。我跟蹤使用矩陣訪問堆棧中的點。該矩陣有兩列,一列用於x座標,另一列用於y座標。問題是,我的程序適用於小型迷宮,但對於大型迷宮,我的計算器耗盡內存。我想知道是否有更少的內存密集型方法來實現堆棧。我正在考慮使用字符串作爲可能的方式來做到這一點。順便說一下,我使用了ti-84 CSE。如何在ti-basic中實現低層棧
0
A
回答
3
您的堆棧應該可能使用列表來實現。我將使用L1進行演示。堆棧是後進先出的數據結構。 元素通過使用
L1(X)
其中X是你想要的物品進行訪問。這意味着首先必須進入L1(1)(列表的開始;第一個項目),並且首先必須從列表中的最後項目出來。要了解有多少項目在列表中(因此找出第N項是最後一個)使用
dim(L1)
這會給一些有多少項目有。我們可以使用它來始終訪問列表中的最後一項,而不是將它存儲到變量中。使用這個:
L1(dim(L1))->M
//this addresses the item of L1 at dim(L1), meaning the last item
現在M將具有最後一項的值。這是第一部分。然後,摧毀最後一個項目(因爲你彈出它關閉),這樣做:
dim(L1)-1->dim(L1)
所以把他們放在一起,你的「啪」的代碼將是:
If dim(L1)>0
Then
// It checks if L1 has an element to pop off in the first place
L1(dim(L1))->M
dim(L1)-1->dim(L1)
End
現在,M將具有最後一個項目的值,並且最後一個項目被銷燬。現在,轉到推送代碼。推,你必須把你的號碼放入一個比舊的最後一個號碼更高的新號碼。從本質上講,您必須創建一個新的最後項目。幸運的是,TI-Basic非常簡單。您的「推」的代碼是:
If dim(L1)<99
// It checks if L1 has less than the maximum number of elements,
// which is 99.
M->L1(dim(L1)+1)
如果你會被存儲X/Y與堆疊座標,我建議的格式像這樣:
X + .01Y -> M
//X=3, Y = 15
// This would make M be 3.15
而對於把它們分成兩個單獨的座標:
int(M)->X
// The integer value of M is 3, which is what X was earlier
100*fPart(M)->Y
// The fraction part of M was .15. Multiply that by 100 to get 15,
// which is what Y was earlier
相關問題
- 1. 多態如何在C++等語言的低層實現?
- 2. 在MySQL中實現堆棧
- 3. 在java中實現堆棧
- 4. 在C++中實現堆棧
- 5. 在C++中實現堆棧
- 6. 在c中實現堆棧
- 7. 如何實現業務層
- 8. 如何在N層圖層應用程序中實現IDependencyResolver?
- 9. 如何在AVX中實現樓層(雙層)?
- 10. 如何在佈局上實現圖層?
- 11. 如何實現在C#3層建築
- 12. C棧實現
- 13. 棧實現
- 14. 堆棧實現
- 15. C中的堆棧實現
- 16. 如何實現兩個堆棧隊列
- 17. SVG不透明堆棧如何實現?
- 18. 如何以LISP語言實現堆棧
- 19. 如何實現Dart + Postgressql堆棧
- 20. 如何用std :: vector實現堆棧?
- 21. 在SimpleSAMLphp低級庫中實現SAML2_Compat_AbstractContainer
- 22. 在matlab中實現低通濾波器
- 23. 在Java中,如何輕鬆實現堆棧<MyElement>的實例的深層副本?
- 24. 如何在H.264中以低數據速率實現CBR?
- 25. 如何在Matlab中實現低通Butterworth濾波器?
- 26. 如何在android中實現低音效果?
- 27. 如何在低級別的Silverlight中實現綁定?
- 28. 如何才能實現只有堆棧實現的隊列?
- 29. C++堆棧實現
- 30. 嵌套棧實現
爲教魚而不僅僅是給魚給魚的投票。 –
@EastonBornemeier謝謝!我也對它進行了徹底的解釋,因爲我知道TI-Basic看起來像一團糟,除非先解釋清楚。 –
@Stephen P謝謝!將2個座標合併爲一個數字確實是切肉刀。 – Meepo