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

【阶乘】个人练习-Leetcode-LCP 22. 黑白方格画

题目链接:https://leetcode.cn/problems/ccw6C7/description/

题目大意:给出一块白方格面积为n*n,给出一个数字k,每一次操作可以把方格的某一整行或者某一整列涂黑,求使得黑色格子数字为k的【最终图案】的个数。

思路:虽然是简单题,但还想了一会的。因为【最终图案数】并不是【操作方法数】。比如2*2的格子,【先涂一行再涂一列】和【先涂一列再涂一行】得到的图案是一样的。我们发现涂的行列具体是哪几行哪几列并不影响最终黑格子的数目,因此可以先得出【需要涂黑x行】和【需要涂黑y列】,然后求组合数 C n x C_n^x Cnx C n y C_n^y Cny的乘积即可。因为x, y对可能有多个,我们用一个vector<pair<int, int>>来保存。

然而要注意一下一些特殊情况:
k < n:那么就算只涂一行也会超过,不行
k == 0:什么都不用做,返回1

求阶乘的话可以用一个数组来保存结果,避免重复计算。

完整代码

class Solution {
public:vector<int> frac;int getFrac(int x) {if (x == 0)return frac[0] = 1;if (frac[x])return frac[x];elsereturn frac[x] = x*getFrac(x-1);}int paintingPlan(int n, int k) {if (k == 0)return 1;if (n > k)return 0;if (n*n == k)return 1;int ans = 0;vector<pair<int, int>> res;frac.resize(n+1, 0);for (int x = 0; x < n; x++) {for (int y = 0; y < n; y++) {if (x*n+y*(n-x) > k)break;else if (x*n+y*(n-x) == k) {res.emplace_back(make_pair(x, y));}else;}}for (auto p : res) {int x = p.first, y = p.second;ans += (getFrac(n)/getFrac(x)/getFrac(n-x)) * (getFrac(n)/getFrac(y)/getFrac(n-y));}return ans;}
};
http://www.lryc.cn/news/400973.html

相关文章:

  • 十七、【文本编辑器(三)】图像坐标变换
  • 生活中生智慧
  • 2024第18届中国西部(成都)教育装备展12月14日举办
  • Webpack看这篇就够了
  • 基于京东电商蓝牙耳机产品评论数据的情感分析与文本分析
  • 【Linux网络】poll{初识poll / poll接口 / poll vs select / poll开发多客户端echo服务器}
  • 数据库db文件损坏修复方法(sqlite3:database disk image is malformed)
  • Prometheus 云原生 - 微服务监控报警系统 (Promethus、Grafana、Node_Exporter)部署、简单使用
  • Spring源码注解篇三:深入理解@Component注解
  • SpringBoot中常用的注解及其用法
  • 【大语言模型】私有化搭建-企业知识库-知识问答系统
  • CSS常用的样式
  • 结合实体类型信息(2)——基于本体的知识图谱补全深度学习方法
  • 如何在电脑上演示手机上APP,远程排查移动端app问题
  • SQL Server 创建用户并授权
  • 网关设备BL122实现Modbus RTU/TCP转Profinet协议
  • 采购管理软件:改善初创企业的采购流程
  • Python 是一种用途广泛的编程语言,应用于各个领域
  • 【VUE】9、VUE项目中使用VUEX完成状态管理
  • 【eNSP模拟实验】单臂路由实现VLAN间通信
  • 哪些点权衡素材优秀与否
  • 服务器数据恢复—2块硬盘离线且热备盘未完全激活的raid5数据恢复案例
  • Excel 学习手册 - 精进版(包括各类复杂函数及其嵌套使用)
  • 【CUDA】thrust进行前缀和的操作
  • Qt-QPainter的使用总结
  • 轻松搞定GIS场景编辑,这款免费工具你一定要试试
  • 【笔记】一起齿轮箱的故障和相应的数学模拟实验
  • 官宣:百数低代码平台已顺利通过国家信息安全等级保护三级认证
  • Spring源码注解篇二:手写@Component注解
  • 云备份服务端