逐至 2021-04-25 11:19 采纳率: 100%
浏览 138
已结题

c#编程题,矩阵表达式,进链接看文本,会的留下代码,注释

链接: https://pan.baidu.com/s/1OrLm5PLoFK8oH-foAySgAQ

提取码: u3wq 

  • 写回答

4条回答 默认 最新

  • Go 旅城通票 2021-04-25 20:20
    关注

    线性代数。。重学了一遍,o(╥﹏╥)o。。。

    using System;
    using System.Linq;
    using System.Collections.Generic;
    namespace ConsoleApp1
    {
        class Matrix
        {
            int size;
            int[,] a;
    
            public Matrix(int n)
            {
                size = n;
                a = new int[n, n];
            }
    
            public void read()
            {
                for (int i = 0; i < size; ++i)
                {
                    string[] words = Console.ReadLine().Trim().Split(null);
                    if (words.Length != size)
                    {
                        Console.WriteLine("bad input");
                        throw new Exception("bad input");
                    }
                    for (int j = 0; j < size; ++j)
                        a[i, j] = int.Parse(words[j]);
                }
            }
    
            public static Matrix operator +(Matrix a, Matrix b)
            {
                var size = a.size;
                var m = new Matrix(size);
                for (var i = 0; i < size; i++)
                    for (var j = 0; j < size; j++)
                        m.a[i, j] = a.a[i, j] + b.a[i, j];
                return m;
            }
            public static Matrix operator -(Matrix a, Matrix b)
            {
                var size = a.size;
                var m = new Matrix(size);
                for (var i = 0; i < size; i++)
                    for (var j = 0; j < size; j++)
                        m.a[i, j] = a.a[i, j] - b.a[i, j];
                return m;
            }
            public static Matrix operator *(Matrix a, Matrix b)
            {
                var size = a.size;
                var m = new Matrix(size);
                for (var i = 0; i < size; i++)
                {
                    for (var j = 0; j < size; j++)
                    {
                        var sum = 0;
                        for (var k = 0; k < size; k++)
                        {
                            sum += a.a[i, k] * b.a[k,j];
                        }
    
                        m.a[i, j] = sum;
                    }
                }
                return m;
            }
            public void print()
            {
                var last = size - 1;
                for (var i = 0; i < size; i++)
                {
                    for (var j = 0; j < size; j++)
                    {
                        Console.Write(a[i, j]);
                        if (j != last) Console.Write(" ");
                    }
                    if (i != last) Console.Write("\n");
                }
            }
        }
    
        class Program
        {
            public static void Main()
            {
                var arr = Console.ReadLine().Split(' ').Select(i => int.Parse(i)).ToArray();
                var Matrixs = new Matrix[arr[1]];
                for (var i = 0; i < arr[1]; i++)
                {
                    Matrixs[i] = new Matrix(arr[0]);
                    Matrixs[i].read();
                    Console.ReadLine();
                }
            
    
                var exps = Console.ReadLine().Trim().Split(' ');
                Stack<Matrix> q = new Stack<Matrix>();
                Matrix a, b;
                foreach (var exp in exps)
                {
                    switch (exp)
                    {
                        case "+": q.Push(q.Pop() + q.Pop()); break;
                        case "-": a = q.Pop(); b = q.Pop(); q.Push(b - a); break;
                        case "*": a = q.Pop(); b = q.Pop(); q.Push(b*a); break;
                        default: q.Push(Matrixs[int.Parse(exp) - 1]); break;
                    }
                }
                q.Pop().print();
            }
        }
    }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么