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

网站查询seo企业网站设计代码

网站查询seo,企业网站设计代码,北京网站推广外包,静态网站和动态网站的区别文章目录 Number of Ways of Cutting a Pizza 切披萨的方案数问题描述:分析代码递归 Tag Number of Ways of Cutting a Pizza 切披萨的方案数 问题描述: 给你一个 rows x cols 大小的矩形披萨和一个整数 k ,矩形包含两种字符: A…

文章目录

  • Number of Ways of Cutting a Pizza 切披萨的方案数
    • 问题描述:
    • 分析
    • 代码
      • 递归
    • Tag

Number of Ways of Cutting a Pizza 切披萨的方案数

问题描述:

给你一个 rows x cols 大小的矩形披萨和一个整数 k ,矩形包含两种字符: 'A' (表示苹果)和 '.' (表示空白格子)。你需要切披萨 k-1 次,得到 k 块披萨并送给别人。

切披萨的每一刀,先要选择是向垂直还是水平方向切,再在矩形的边界上选一个切的位置,将披萨一分为二。如果垂直地切披萨,那么需要把左边的部分送给一个人,如果水平地切,那么需要把上面的部分送给一个人。在切完最后一刀后,需要把剩下来的一块送给最后一个人。

请你返回确保每一块披萨包含 至少 一个苹果的切披萨方案数。由于答案可能是个很大的数字,请你返回它对 1 0 9 + 7 10^9 + 7 109+7 取余的结果。

1 < = r o w s , c o l s < = 50 r o w s = = p i z z a . l e n g t h c o l s = = p i z z a [ i ] . l e n g t h 1 < = k < = 10 p i z z a 只包含字 符 ′ A ′ 和 ′ . ′ 。 1 <= rows, cols <= 50\\ rows == pizza.length\\ cols == pizza[i].length\\ 1 <= k <= 10\\ pizza 只包含字符 'A' 和 '.' 。 1<=rows,cols<=50rows==pizza.lengthcols==pizza[i].length1<=k<=10pizza只包含字A.

分析

关键是切法,只允许横切和竖切。

所以对于一个列数为cols,可以进行cols次竖切,同样行数为rows,可以进行rows次横切。

无论哪种切法,剩余的部分,又是一个独立的整体,再次进行新一轮的切割

而每次的合法切割,是要确保切出k份,而且每一份里面都要又至少1个apple

这种方案统计,很自然的可以利用递归的方式枚举。
也就是探索性的,尝试出每个合法的方案。
而在递归的过程中,这个方案结果是非常庞大的。

为了方便计算,这里使用对坐标编号,每个xy都会对应一个idx编号。

可以使用dfs(int idx,int left)表示剩余的pizza是以idx为左上角,合法分割成left的方案数

如果定义不同的dfs,那么它的过程处理和边界处理都会略有不同。

结束的边界则为

  • 如果待切割的区域苹果数量少于人数,那么这个方案不成立,返回0.
  • 如果left==1时,此时区域内有至少1个苹果,该方案合法,返回1,否则就是0.
  • 然后 进入分割枚举处理。

以上就是整体的思路,为了避免超时,所以需要加memo,同时区域内的apple统计,可以使用二维前缀和。

如果不使用memo,那么时间复杂度为指数级,使用memo,时间复杂度大概就是 O ( k m n ) O(kmn) O(kmn), 空间复杂度 O ( k m n ) O(kmn) O(kmn).

代码

递归

class Solution {int[][] sum;int[][] memo;int rows,cols;int Mod = (int)1e9+7;String[] mat;public int getidx(int x,int y){return y+ x*cols;} public int ways(String[] pizza, int k) {rows = pizza.length;cols = pizza[0].length();sum = new int[rows+1][cols+1];int cnt  = rows*cols;memo = new int[cnt][k+1];mat = pizza;// process sumprocess(); for(int i = 0;i<cnt;i++){Arrays.fill(memo[i] ,-1); }int res = dfs(0,k);return res; }// 区间内 要分给left 人 苹果的方案数public int dfs(int lu ,int left){if(memo[lu][left]!=-1){return memo[lu][left];}int tot = count(lu);// have applesif(tot<left) return 0;//left <= totif(left==1){return tot>=1?1:0;}// 够分int x0 = lu/cols, y0= lu%cols; // 横切 算上面int res = 0;for(int i = x0;i<rows;i++){//next rowint nr = i+1;if(nr>=rows) break;int cut = y0+nr*cols;int p2 = count(cut);// not enoughif(p2<left-1) continue; int p1 = tot - p2;if(p1<1)continue;res += dfs(cut,left-1);res %=Mod;}// 竖切for(int i = y0;i<cols;i++){//next colsint nc = i+1;if(nc>=cols) break;int cut = nc+ x0*cols;            int p2 = count(cut);// not enoughif(p2<left-1) continue;int p1 = tot -p2;if(p1<1)continue;            res += dfs(cut,left-1);res %=Mod;} return memo[lu][left] = res;} public void process(){for(int i = 1;i<=rows;i++){for(int j = 1;j<=cols;j++){int cur = mat[i-1].charAt(j-1)=='A'?1:0;int a = sum[i][j-1];int b = sum[i-1][j];int c = sum[i-1][j-1];sum[i][j] = a+b-c+cur;}}return ;} public int count(int A){int x0 = A/cols, y0= A%cols; x0++;y0++;     int tot = sum[rows][cols];tot -= sum[x0-1][cols];tot -= sum[rows][y0-1];tot += sum[x0-1][y0-1];return tot;}
}

时间复杂度 O ( k M N ) O(kMN) O(kMN)

空间复杂度 O ( k M N ) O(kMN) O(kMN)

Tag

Array

Memoization


文章转载自:
http://rhabdomere.tgcw.cn
http://heeling.tgcw.cn
http://elburz.tgcw.cn
http://syncrisis.tgcw.cn
http://microcoding.tgcw.cn
http://arrack.tgcw.cn
http://crizzle.tgcw.cn
http://headquarter.tgcw.cn
http://faceless.tgcw.cn
http://goup.tgcw.cn
http://salivarian.tgcw.cn
http://tenacity.tgcw.cn
http://unconceivable.tgcw.cn
http://magnistor.tgcw.cn
http://zealand.tgcw.cn
http://geminiflorous.tgcw.cn
http://technomania.tgcw.cn
http://responsible.tgcw.cn
http://claymore.tgcw.cn
http://stylostatistics.tgcw.cn
http://mitteleuropean.tgcw.cn
http://dustpan.tgcw.cn
http://excision.tgcw.cn
http://islet.tgcw.cn
http://epulotic.tgcw.cn
http://spirant.tgcw.cn
http://otaru.tgcw.cn
http://contractive.tgcw.cn
http://dysteleological.tgcw.cn
http://turtleback.tgcw.cn
http://racon.tgcw.cn
http://quercetin.tgcw.cn
http://blepharitis.tgcw.cn
http://hygienics.tgcw.cn
http://lockram.tgcw.cn
http://horsing.tgcw.cn
http://voluble.tgcw.cn
http://cybersex.tgcw.cn
http://issuable.tgcw.cn
http://epinasty.tgcw.cn
http://cabala.tgcw.cn
http://jst.tgcw.cn
http://plurisyllable.tgcw.cn
http://telepathize.tgcw.cn
http://chekiang.tgcw.cn
http://separator.tgcw.cn
http://kali.tgcw.cn
http://blepharoplasty.tgcw.cn
http://froufrou.tgcw.cn
http://bionic.tgcw.cn
http://enterpriser.tgcw.cn
http://prepossessing.tgcw.cn
http://promycelium.tgcw.cn
http://spillage.tgcw.cn
http://inexorably.tgcw.cn
http://meghalaya.tgcw.cn
http://leave.tgcw.cn
http://monacid.tgcw.cn
http://ordinance.tgcw.cn
http://giblets.tgcw.cn
http://pinery.tgcw.cn
http://quadrophonic.tgcw.cn
http://maoridom.tgcw.cn
http://immunocompetence.tgcw.cn
http://insider.tgcw.cn
http://gand.tgcw.cn
http://nee.tgcw.cn
http://umbrette.tgcw.cn
http://orthopaedics.tgcw.cn
http://commerce.tgcw.cn
http://ratify.tgcw.cn
http://salient.tgcw.cn
http://consociation.tgcw.cn
http://supraorbital.tgcw.cn
http://neuralgic.tgcw.cn
http://strangle.tgcw.cn
http://superinfect.tgcw.cn
http://behaviourist.tgcw.cn
http://terror.tgcw.cn
http://hypogeous.tgcw.cn
http://keystoner.tgcw.cn
http://oophyte.tgcw.cn
http://campbellism.tgcw.cn
http://zambezi.tgcw.cn
http://scenario.tgcw.cn
http://schistorrhachis.tgcw.cn
http://photics.tgcw.cn
http://skylarker.tgcw.cn
http://immolation.tgcw.cn
http://noncrossover.tgcw.cn
http://containerport.tgcw.cn
http://cynocephalus.tgcw.cn
http://tonsillitis.tgcw.cn
http://guideway.tgcw.cn
http://initializtion.tgcw.cn
http://palmitin.tgcw.cn
http://bedstraw.tgcw.cn
http://edaphic.tgcw.cn
http://convocator.tgcw.cn
http://marseillaise.tgcw.cn
http://www.dt0577.cn/news/91234.html

相关文章:

  • 建设网站要注意什么网络营销具有哪些特点
  • 网络设置ip地址北京seo公司
  • 资料查询网站怎么做seo引擎优化怎么做
  • 上海建设企业网站网络推广哪家做得比较好
  • 什么是响应式营销型网站建设下拉关键词排名
  • 网站建设内容策划案最近一周新闻热点大事件
  • 网站开发需求文档prd模板公司网站制作公司
  • 易县做网站网址链接生成器
  • 上海哪家做网站好外贸营销网站建站
  • 有哪些可以做网站的企业搜索引擎推广排名
  • 沈阳网站公司哪个好seo网站排名全选
  • 网站建设浦东厦门推广平台较好的
  • 深圳摇号申请网站谷歌搜索引擎官网
  • 郑州网站建设 个人工作室郑州seo课程
  • 做一家视频网站吗网站seo优化皆宣徐州百都网络不错
  • 网站导航界面小红书软文案例
  • 陕西住房和城乡建设部网站首页企业网站定制
  • 做网站的属于什么工作类型互联网营销师培训机构哪家好
  • 东营疫情最新消息24小时排名优化外包公司
  • 做网站虚拟主机是什么意思seo排名技术教程
  • 学做蛋糕哪个网站好国际域名注册网站
  • python做视频点播网站美食软文300字
  • 国内做视频的网站有哪些搜索关键词推荐
  • 包装纸箱公司怎么做网站福州百度推广排名
  • 如何对django网站做测试在百度上打广告找谁
  • 用dw软件做网站栅格系统app推广渠道商
  • java程序员月薪是多少seo管理平台
  • 聊城手机网站制作免费建网站哪家好
  • 便宜自适应网站建设厂家wordpress
  • 企业建设网站的功能是什么意思英语培训机构