不是3*m*n是3^(m*n)意思是:3的(m*n)的积次幂如,你说所,要你求2*2矩阵情况,每个元素都有3个情况:-1,0,1那就是情况数=3^(2*2)=3^4=3*3*3*3=81种情况。

解决方案 »

  1.   

    每一位有3中变化,所以
    {(a,b),(c,d)}
    =3*3*3*3=3^4=3^X
    m行n列有m*n个元素
    所以X=(m*n)个元素
    =3^(m*n)
      

  2.   

    可能是3 的(M*N次)幂 
    现假定m<5,n<5,其它不变
      

  3.   

    有一个矩阵M*N(m <26,n <26),每个元素只能取-1,0,1三种值,求遍列各种矩阵的算法。 
    如一个2*2 的矩阵,结果有12种,{(-1,-1),(-1,-1)},,{(-1,-1),(-1,0)}, 
    ,{(-1,-1),(0,0)},,{(1,1),(-1,-1)},,{(1,1),(1,1)}, 
    ,{(0,0),(-1,-1)}等,求这种算法!!!求遍列各种矩阵的算法。 
      

  4.   

    有一个矩阵M*N(m <26,n <26),每个元素只能取-1,0,1三种值,求遍列各种矩阵的算法。 
    如一个2*2 的矩阵,结果有3*3*3*3种,{(-1,-1),(-1,-1)},,{(-1,-1),(-1,0)}, 
    ,{(-1,-1),(0,0)},,{(1,1),(-1,-1)},,{(1,1),(1,1)}, 
    ,{(0,0),(-1,-1)}等,求这种算法!!! 
      

  5.   

    暂时写不出完整的算法
    大意如下:首先考虑1×1矩阵,就是一个元素,因此取值就是三种,-1,0,1
    2×2矩阵就是4个1×1矩阵,每个1×1矩阵又有三种形式,进行循环就能得到所有的2×2矩阵
    3×3矩阵就是一个2×2矩阵+5个1×1矩阵,进行组合
    4×4矩阵就是一个个3×3矩+7个1×1矩阵进行组合M*N矩阵就是K1个(M-1)×(N-1)矩阵+P1个1×1矩阵进行组合的结果
    (M-1)*(N-1)矩阵就是K2个(M-2)*(N-2)个矩阵+P2个1×1矩阵进行组合的结果
    依次类推,直到2×2矩阵,再到1×1矩阵
    结果就出来了
      

  6.   

     class GenerateArrays
        {
            const int MAX=100;
            int[,] Values=new int[MAX,MAX];
            int[] PossibleValue = new int[] { -1, 0, 1 };
            int M, N;
            public void Generate(int weight, int height)
            {
                M = weight;
                N = height;
                Processing(1, 1);
            }
            void Processing(int weight, int height)
            {
                if (weight > M)
                {
                    ///打印这个矩阵
                    Console.WriteLine("array ");
                    for (int i = 1; i <=M; i++)
                    {
                        for(int j=1; j<=N; j++)
                        {
                            Console.Write(Values[i, j].ToString() + " ");
                        }
                        Console.WriteLine();
                    }
                    return;
                }
                for (int i = 0; i < PossibleValue.Length; i++)
                {
                    Values[weight,height] = PossibleValue[i];
                    if (height == N)
                    {
                        Processing(weight + 1, 1);
                    }
                    else
                    {
                        Processing(weight, height + 1);
                    }
                }        }
        }
      static void Main(string[] args)
            {
                GenerateArrays ga = new GenerateArrays();
                ga.Generate(2, 2);
            }