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

山东兴华建设集团有限公司网站免费做网站的app

山东兴华建设集团有限公司网站,免费做网站的app,有什么网站是做办公家具,wordpress更改网站内容目录 1444. 切披萨的方案数 题目描述#xff1a; 实现代码与解析#xff1a; 二维后缀和 动态规划 原理思路#xff1a; 1444. 切披萨的方案数 题目描述#xff1a; 给你一个 rows x cols 大小的矩形披萨和一个整数 k #xff0c;矩形包含两种字符#xff1a; A …目录 1444. 切披萨的方案数 题目描述 实现代码与解析 二维后缀和  动态规划 原理思路 1444. 切披萨的方案数 题目描述 给你一个 rows x cols 大小的矩形披萨和一个整数 k 矩形包含两种字符 A 表示苹果和 . 表示空白格子。你需要切披萨 k-1 次得到 k 块披萨并送给别人。 切披萨的每一刀先要选择是向垂直还是水平方向切再在矩形的边界上选一个切的位置将披萨一分为二。如果垂直地切披萨那么需要把左边的部分送给一个人如果水平地切那么需要把上面的部分送给一个人。在切完最后一刀后需要把剩下来的一块送给最后一个人。 请你返回确保每一块披萨包含 至少 一个苹果的切披萨方案数。由于答案可能是个很大的数字请你返回它对 10^9 7 取余的结果。 示例 1 输入pizza [A..,AAA,...], k 3 输出3 解释上图展示了三种切披萨的方案。注意每一块披萨都至少包含一个苹果。示例 2 输入pizza [A..,AA.,...], k 3 输出1示例 3 输入pizza [A..,A..,...], k 1 输出1提示 1 rows, cols 50rows  pizza.lengthcols  pizza[i].length1 k 10pizza 只包含字符 A 和 . 。 实现代码与解析 二维后缀和  动态规划 class Solution { public:int ways(vectorstring pizza, int k) {int m pizza.size(), n pizza[0].size(), mod 1e9 7;vectorvectorvectorint f(k, vectorvectorint(m, vectorint(n)));vectorvectorint apples(m 1, vectorint(n 1)); // 后缀和// 后缀和 与 初始化dp数组for (int i m - 1; i 0; i--){for (int j n - 1; j 0; j--){apples[i][j] apples[i 1][j] apples[i][j 1] - apples[i 1][j 1] (pizza[i][j] A);f[0][i][j] apples[i][j] 0;}} for (int kk 1; kk k; kk){for (int i 0; i m; i){for (int j 0; j n; j){// 选择此刀的切割位置// 水平切, 遍历切的位置for (int a i 1; a m; a){// 上面的一块中至少要有一个苹果if (apples[i][j] apples[a][j]){f[kk][i][j] (f[kk][i][j] f[kk - 1][a][j]) % mod;}}// 垂直切for (int b j 1; b n; b){// 左侧块中至少有一个苹果if (apples[i][j] apples[i][b]){f[kk][i][j] (f[kk][i][j] f[kk - 1][i][b]) % mod;}}}}}return f[k - 1][0][0];} }; 原理思路 apples 数组后缀和用于记录一块披萨中的苹果数量用一块中的左上角来代替此块含有的苹果数。 此题的关键是dp[ k ][ i ][ j ] 的含义代表还剩下 k 刀没切剩下的是左上角为 i j 的披萨状态时的切割方案总数。这是我自己的理解力扣上dp数组定义的含义感觉不如我这样写和解释更直观不过原理肯定是一样的。 知道dp数组的含义就很好写了。 首先计算 apples 数组这个就不用解释了不会的话建议去学习一下前缀和二维前缀和的基础算法就行同时初始化一下dp。 初始化dp数组显然在还需要切0刀剩下最后一块披萨中有苹果时表示切好了是一种情况赋值为1否则不成立赋值为0 f[0][i][j] apples[i][j] 0; 遍历顺序一定是先遍历切割刀数因为就比如一个形状披萨状态下切两刀肯定需要切一刀的状态递推而来后面根据递推式也能看出来。 递推方程两种切法分类讨论 水平切肯定是从第一行下边开始切总不能切空气吧所以是 i 1 开始遍历然后切完后上面的那块中一定要有苹果所以需要判断一下切完此刀后剩下的大块需要再切 kk - 1刀我们就不用再去遍历了dp数组含义就是这个根据这个写出递推式。 递推式f[ kk ][ i ][ j ] (f[ kk ][ i ][ j ] f[ kk - 1 ][ a ][ j ]) % mod; 垂直切与水平切同理直接给出递推式 递推式f[ kk ][ i ][ j ] (f[ kk ][ i ][ j ] f[ kk - 1 ][ i ][ b ]) % mod; 最后返回结果显然在初始状态还剩切k - 1刀时是我们需要的结果状态。 return f[ k - 1 ][ 0 ][ 0 ]; 结束。
http://www.huolong8.cn/news/131024/

相关文章:

  • 昔阳做网站公司html免费网站模板下载
  • 淘宝网电脑版登录入口官网网页seo网站推广的目的包括哪个方面
  • 广州网站开发平台百度官网平台
  • 网站管理员权限有哪些wordpress标签的作用
  • 山东做网站费用嘉兴网站制作费用
  • 网站外链如何建设韩国优秀网站
  • 网站查询seo优化报价公司
  • 做网站余姚wordpress子目录无法访问后台
  • 网站推广需要几个人做在线做网站怎么做
  • 免费企业建站选哪家千家美装饰怎么样
  • 福州建设银行官网招聘网站wordpress建英文站
  • 安徽省同济建设集团网站商企通三合一网站建设
  • 云南协千网站优化是做什么的
  • 镇江网站建设优化案例分析seo诊断大夫
  • 网站服务器迁移步骤跨境电商erp选哪个好
  • 四川省建设厅网站电话做电影资源网站有哪些内容
  • 做logo的ppt模板下载网站乐清网吧什么时候恢复营业
  • 建设银行积分网站海淀做网站设计的公司
  • dede淘宝客网站模板便利的邯郸网站建设
  • 中山网站建设金科用word 做网站
  • 江西建网站温州做网站最好的
  • 做网站软件的义乌简游网络科技有限公司
  • u网站建设微信小程序怎么做网站
  • 公司网站建设合同要交印花税吗品牌策划案范本
  • wordpress 站外链接一般做网站用什么字体比较合适
  • 赚钱平台网站创意工作室网站
  • 鲜花网站源码企业生产erp软件公司
  • 网站策划初级方案模板网站版式布局
  • 东莞网站建设推广方案代做网页设计作业价格
  • 花店网站建设的工作流程二级建造师注册查询官网入口