当前位置: 首页 > news >正文

小红的好数组陡峭值之和

题目如下
在这里插入图片描述
这个题我一开始是先生成满足0,1,2的全排列,但是n很大时很快就超出内存限制了,后来想到用动态规划的方法做,这里先分析一下。
n=2时,有01,02,10,12,20,21共6项,
n=3时,有010,012,020,021…共12项
容易推导出,n=m时,有3 * Math.pow(2, m-1)项
这里我们先定义一个数组f (n, i)表示第n组中以i结尾的所有数组的权值之和,比如
f(2,0)有10, 20两项,权值之和是1+2=3
f(2,1)有01,21两项,权值之和是1+1=2
同理f(2,2)=3
这几个就是我们的初始条件了
那f(n,0)怎么推到呢,0只能加在1和2的后面,如果加在1后面,如*** 10,增加的权值是1, 如果是增加在2后面,如*** 20,增加的权值是2,假设n-1组中以0结尾的数组有count个,那么增加的权值就是1 * count, 假设n-1组中以2结尾的数组有count个,那么增加的权值就是2 * count, 这里就可以写出推导式f(n,0) = f(n-1) + count * 1 + f(n-2) + 2 * count, 其他也这样推导出来。代码如下

    public int fun (int m) {final int MAX = (int) Math.pow(10, 7);// 容易归纳出// n= 2时,有6个数组// n= 3时,有12个数组// n= m时,有3*math.pow(2,n-1)个数组int[][] array= new int[m+1][3]; // array[n][i]表示第n组以i结尾的数组的权值array[2][0] = 3; // 10,20array[2][1] = 2; // 01,21array[2][2] = 3; // 02,12for (int n = 3; n < m+1; n++) {int count = (int) Math.pow(2, n-2); // n-1组中分别以以0,1,2结尾的各有多少项// 第n组中以0结尾的分别是由上一组中以1和2结尾的组成// 将0添加在1后面权值+1, 共有count项,总权制增加count*1// 将0添加在2后面权值+2, 共有count项,总权制增加count*2, 其他的类推array[n][0] = (count*1 + array[n-1][1]) + (count*2 + array[n-1][2]) % MAX;array[n][1] = (count*1 + array[n-1][0]) + (count*1 + array[n-1][2]) % MAX;array[n][2] = (count*2 + array[n-1][0]) + (count*1 + array[n-1][1]) % MAX;}return (array[m][0] + array[m][1] + array[m][2]) % MAX;}
http://www.lryc.cn/news/68720.html

相关文章:

  • MySQL中存储具有不定列的数据-EAV模型
  • COM接口规则的存在是有原因的
  • 并行分布式计算 并行计算性能评测
  • [网络安全]XSS之Cookie外带攻击姿势及例题详析
  • Angular之创建项目报错:setTimeout is not defined
  • python实现神经网络之---构建神经元模型1(python3.7)
  • 前端面试题 —— JavaScript (三)
  • 【openGauss】一键编译openGauss5.0+dolphin,体验新增的mysql兼容特性
  • 【LeetCode - 每日一题】1073. 负二进制数相加 (2023.05.18)
  • 软件上线会面临哪些缺陷?这四种你一定很熟悉
  • html监听界面被隐藏或显示
  • Springboot启动失败 DB连不上竟然是maven配置的问题
  • P9234 [蓝桥杯 2023 省 A] 买瓜 题解
  • ThingsBoard自定义分发节点duplicate to related
  • vim自动更新ctags与taglist
  • linux查看日志常用命令,动态日志命令
  • 分段存储管理方式
  • 将nacos从本地切换到远程服务器上时报错:客户端端未连接,Client not connected
  • 系统掌握入河排污口设置论证技术、方法及报告编制框架
  • 服务端渲染
  • 干货丨警惕!14个容易导致拒稿的常见错误
  • Web基础 ( 二 ) CSS
  • MSQL系列(一) Mysql实战-索引结构 二叉树/平衡二叉树/红黑树/BTree/B+Tree
  • 理论力学专题:张量分析
  • 索引失效情况
  • pv操作练习题
  • 【小菜鸡刷题记】--字符串篇
  • Sonar加入jenkins流水线
  • FSW26现金回收RS FSW43 信号和频谱分析仪
  • GraphPad Prism 9.5.1 for Mac 操作简便功能强大且实用的医学绘图分析工具