2017-04-16 13 views
0

私は再帰的なバックトラックを使用して迷路生成アルゴリズムを作成しています。私は行列を使ってスタック内を訪れるポイントを追跡します。この行列には、x座標用とy座標用の2つの列があります。問題は、私のプログラムは小さな迷路のために働くが、大きな迷路のために私の計算機はメモリ不足になるということである。私は、スタックを実装するためのメモリー集約的な方法が少ないかどうか疑問に思っていました。私は可能な方法として文字列を使用することを考えています。私はti-84 CSEを使っています。ti-basicで低momoryスタックを実装する方法

答えて

3

あなたのスタックはおそらくリストを使って実装されるべきです。デモンストレーションの目的でL1を使用します。スタックは、ラスト・イン・ファーストアウトのデータ構造です。 リストの要素は、Xは、あなたが欲しいアイテムです

L1(X) 

を使用してアクセスできます。これは、まず最初にL1(1)(リストの始め、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 

とTOをこれらを別々の2つの別々の座標に分けてください:

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 
+0

魚に教えるだけでなく、人間に魚を与えることもできます。 –

+0

@EastonBornemeierありがとう!私はTI-Basicが最初に正しく説明されていない限り混乱のように見えることがあるので、完全に説明しました。 –

+0

@Stephen Pありがとう!実際には、2つの座標を1つの数字に結合するのはきれいでした。 – Meepo

関連する問題