动态规划之矩阵连乘(C语言)

2023-11-01

#include <stdio.h>
#define N 20 
void MatrixChain(int p[N],int n,int m[N][N],int s[N][N]){ 
  int i,j,t,k;   
  int r;             //记录相乘的矩阵个数变量 
  for(i=1;i<=n;i++){ 
    m[i][i]=0;         //当一个矩阵相乘时,相乘次数为 0  
  }   
  //矩阵个数从两个开始一次递增  
  for(r=2;r<=n;r++){ 
    //从某个矩阵开始     
    for(i=1;i<=n-r+1;i++){ 
      //到某个矩阵的结束  
      j=i+r-1; 
      //拿到从 i 到 j 矩阵连乘的次数  
      m[i][j]=m[i+1][j]+p[i-1]*p[i]*p[j]; 
      //拿到矩阵连乘断开的位置  
      s[i][j]=i; 
      //寻找加括号不同,矩阵连乘次数的最小值,修改 m 数组,和断开的位置 s 数组  
      for(k=i+1;k<j;k++){ 
        t=m[i][k]+m[k+1][j]+p[i-1]*p[k]*p[j]; 
        if(t<m[i][j]){ 
          m[i][j]=t; 
          s[i][j]=k; 
        } 
      } 
    } 
  }  
} 
 
int main(void){ 
  int n,n1,m1,i,j=2; 
  int p[N]={0};          //存储矩阵的行和列数组  
  int m[N][N]={0};        //存储矩阵与矩阵相乘的最小次数 
  int s[N][N]={0};        //存储矩阵与矩阵相乘断开的位置  
  printf("请输入矩阵个数:\n"); 
  scanf("%d",&n); 
  for(i=1;i<=n;i++){ 
    printf("请输入第%d个矩阵的行和列(n1*m1 格式):",i); 
    scanf("%d*%d",&n1,&m1); 
    if(i==1){ 
      p[0]=n1; 
      p[1]=m1; 
    } 
    else{ 
      p[j++]=m1; 
    } 
  } 
  printf("\n记录矩阵行和列:\n"); 
  for(i=0;i<=n;i++){ 
    printf("%d ",p[i]); 
  } 
  printf("\n"); 
  MatrixChain(p,n,m,s); 
  printf("\n矩阵相乘的最小次数矩阵为:\n"); 
  for(i=1;i<=n;i++){ 
    for(j=1;j<=n;j++){ 
      printf("%d  ",m[i][j]); 
    } 
    printf("\n"); 
  } 
  printf("\n矩阵相乘断开的位置矩阵为:\n"); 
  for(i=1;i<=n;i++){ 
    for(j=1;j<=n;j++){ 
      printf("%d ",s[i][j]); 
    } 
    printf("\n"); 
  } 
  printf("矩阵最小相乘次数为:%d\n",m[1][n]); 
  return 0; 
} 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

动态规划之矩阵连乘(C语言) 的相关文章

随机推荐

  • 关闭虚拟机linux防火墙命令

    关闭防火墙 service iptables stop 永久关闭修改配置开机不启动防火墙 chkconfig iptables off
  • 密码学基础系列

    温故而知新 系统的整理一下基础的密码学知识 1 密码学的应用 1 1 概述 1 2 在计算机网络各个层面的应用 2 对称密钥密码 2 1 传统对称密钥密码 2 2 现代对称密码密码 2 3 常见的对称密码 2 4 应用 2 5 攻击 3 非
  • jmeter——实例练习——使用jmeter完成接口自动化测试

    jmeter 实例练习 使用jmeter完成接口自动化测试 一 以天气接口为例测试get接口 1 新建项目 1 线程组 天气 2 待测模块 天气接口 3 结果树 天气接口 2 填写路径及请求 3 运行 4 查看结果 二 以 悟空crm客户关
  • flutter : Failed to find assets path for “Frameworks/App.framework/flutter_assets“

    在运行Flutter 项目的时候跑IOS模拟器上白屏许久不见进入主页面 等了20分钟一点动静也没有 打开Xcode 查看日志发现 Failed to find assets path for Frameworks App framework
  • 找准边界,吃定安全

    实现业务计算集中模式的云计算数据中心 云内东西向流量不可见不可控 云计算数据中心的安全建设要求再度升级 如何保障云上环境的安全运行 找准边界 吃定安全 往期文章 从访问控制谈起 再看零信任模型 威胁情报加持 泛边界下的全局主动防御体系如何着
  • 创建型模式-原型模式

    文章目录 一 原型模式 1 概述 2 结构 3 实现 4 案例 1 5 使用场景 1 6 扩展 深克隆 一 原型模式 1 概述 用一个已经创建的实例作为原型 通过复制该原型对象来创建一个和原型对象相同的新对象 2 结构 原型模式包含如下角色
  • 编译XT720 2.3.7的kernel

    这是XT720的kernel地址 https github com CyanogenModXT720 android kernel 把其中的xt720分支拷贝下来 color darkred git clone https github c
  • 大数据组件及其性能

    大数据组件有很多 以下是一些常见的大数据组件及其功能和优点的介绍 Hadoop Hadoop是一个开源的分布式计算框架 它包含了Hadoop分布式文件系统 HDFS 和MapReduce计算模型 Hadoop的功能包括存储大规模数据 并行处
  • 从properties文件中读取属性

    为了从properties文件中读取属性 建立一个辅助类 package com util import java io IOException import java util public class Tools 设计成静态变量是为了让
  • Spring Boot使用内存数据库H2和HSQLDB【从零开始学Spring Boot】

    内存数据库 Embedded database或in momery database 具有配置简单 启动速度快 尤其是其可测试性等优点 使其成为开发过程中非常有用的轻量级数据库 在spring中支持HSQL H2和Derby三种数据库 哪个
  • [网络安全提高篇] 一二〇.恶意软件动态分析经典沙箱Cape批量提取动态API特征

    终于忙完初稿 开心地写一篇博客 网络安全提高班 新的100篇文章即将开启 包括Web渗透 内网渗透 靶场搭建 CVE复现 攻击溯源 实战及CTF总结 它将更加聚焦 更加深入 也是作者的慢慢成长史 换专业确实挺难的 Web渗透也是块硬骨头 但
  • 故障诊断 matlab 仿真,基于MATLAB的BP网络变压器故障诊断仿真

    62 内 燃 机 与 配 件基于MATLAB的BP网络变压器故障诊断仿真 郑广瑞 王娜 包头供电局 包 头 014000 摘要 基于油中溶解气体分析针变压器故障诊断的对传统方法 在诊断过程中各存在不同程度的诊断缺陷 导致输出的诊断结果 不准
  • elasticsearch 模糊查询

    1 使用关键字wildcard 2 它使用标准的 shell 通配符查询 匹配任意字符 匹配 0 或多个字符 GET cars transactions search pretty query wildcard city value ia
  • js 设置style属性

    var cssText font weight bold color red 下面写法用于firefox类型浏览器 element setAttribute style cssText 下面写法用于IE类型浏览器 element style
  • 【深度学习】遗传算法

    目录 一 遗传算法 二 遗传算法概述 2 1 选择 2 2 交叉 2 3 变异 三 遗传算法的基本步骤 3 1 编码 3 2 初始群体的生成 3 3 适应度评估 3 4 选择 3 5 交叉 3 6 变异 3 7 总结 四 遗传算法工具箱 4
  • BSGS

    BSGS 问题 给定整数 a b p a b p a b p 其中 a
  • ioctl详解(Linux设备驱动程序模块)

    我这里说的ioctl函数是指驱动程序里的 因为我不知道还有没有别的场合用到了它 所以就规定了我们讨论的范围 写这篇文章是因为我前一阵子被ioctl给搞混了 这几天才弄明白它 于是在这里清理一下头脑 一 什么是ioctl ioctl是设备驱动
  • 面试大厂最常考算法之一LRU缓存算法

    题目 146 LRU 缓存机制 运用你所掌握的数据结构 设计和实现一个 LRU 最近最少使用 缓存机制 实现 LRUCache 类 LRUCache int capacity 以正整数作为容量 capacity 初始化 LRU 缓存 int
  • 官网无法下载 AndroidStudio 解决

    问题 官网无法下载 AndroidStudio 解决 复制链接 更换 redirector gvt1 com 为 dl google com 即可下载
  • 动态规划之矩阵连乘(C语言)

    include