骑码小张 2016-02-26 03:35 采纳率: 0%
浏览 1708
已结题

C语言中关于矩阵算法的问题

从一个m×n的整数矩阵中,找到x×y的子矩阵,使子矩阵中所有元素的和最大,并输出和及子矩阵所有元素。算法实现的思路是怎么样的?

  • 写回答

4条回答 默认 最新

  • M醉清风Y 2016-02-26 04:38
    关注

    遍历M * N 的数组 中所有 X * Y矩阵集合 然后记录最大值,返回
    给你写个 伪代码:
    引用你的 m n x y 的值 架设 array为 你的二维数组
    if(x <=0 || x> m || y <=0 || y>n) return;
    int sum = 0;
    int sumMax = 0; //记录最大值
    int x_index = 0;//记录 X 坐标
    int y_index = 0;//记录Y 坐标
    int Pos_w = m - x + 1; //计算出 矩阵横向移动次数
    int Pow_h = m - y + 1;//计算出 矩阵竖向移动次数
    for(int i= 0 ;i< Pos_w *Pow_h; ++i)
    {
    sum = 0; //清空
    //获取该子矩阵的和
    for(int j = 0; j < x * y; ++j)
    {
    sum += array[j / x + i / Pos_w, j % x + i%Pos_w];
    }
    if (sum > sumMax)
    {
    x_index = i % Pos_w;
    y_index = i / Pos_w;
    sumMax = sum;
    }
    }
    你只要 用 x_index 和 y_index 就可以了 记住 这个 坐标 记录的是 你所需要的子矩阵中 左上角的坐标 从 0,0开始。
    Y 代表 矩阵中的第几行 X 代表 第几列。 我在写运算的时候 已经把 二维转换成 一维了,优化代码的作用。
    如果不理解的话 可以在问我 你直接套用即可。

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)
编辑
预览

报告相同问题?

悬赏问题

  • ¥15 在更新角色衣服索引后,Sprite 并未正确显示更新的效果该如何去解决orz(标签-c#)
  • ¥15 VAE代码如何画混淆矩阵
  • ¥15 求遗传算法GAMS代码
  • ¥15 雄安新区高光谱数据集的下载网址打不开
  • ¥66 android运行时native和graphics内存详细信息获取
  • ¥100 求一个c#通过CH341读取数据的Demo,能够读取指定地址值的功能
  • ¥15 rk3566 Android11 USB摄像头 微信
  • ¥15 torch框架下的强化学习DQN训练奖励值浮动过低,希望指导如何调整
  • ¥35 西门子博图v16安装密钥提示CryptAcquireContext MS_DEF_PROV Error of containger opening
  • ¥15 mes系统扫码追溯功能
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部