ふらっとC#,C♯,C#(初心者用) Part38at TECH
ふらっとC#,C♯,C#(初心者用) Part38 - 暇つぶし2ch244:174
09/03/04 18:56:15
みんなー、アッカーマン関数の話しようぜー。
>>174のコードだと、m=0, n=int.MaxValue-1みたいなケースが計算できない
のが嫌だ。ていうかそもそもの問題は多分アッカーマン関数の表を一気に計算する
コードじゃなくって、与えられたm,nに対してアッカーマン関数の値を計算するコード。

なので、>>187のスタック使ってヒープを使って再帰する方法と、ハッシュ使って
計算済みの値を再利用する方法を組み合わせたアプローチにしてみた。値を再利用
するので、表を生成する用途でも有効。

うちの環境(メモリ1GB)では
m=0でn=int.MaxValue-1まで
m=1でn=10000000くらいまで
m=2でn=5000000くらいまで
m=3でn=20まで
m=4でn=1まで
計算できた。

スレの空気読まずにコードアップするぜ!
        static Dictionary<int, Dictionary<int, int>> Ack
          = new Dictionary<int Dictionary<int, int>>();
        static Stack<int> argM = new Stack<int>();
        static Stack<int> argN = new Stack<int>();
        static int Ackermann(int m, int n)
        {
            argM.Clear();
            argN.Clear();
            argM.Push(m);
            argN.Push(n);
            while (argM.Count>0) {


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch