You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算指定宽高范围内唯一宽高尺寸对的数量?

这其实是个经典的无序组合计数问题,不用循环遍历的话,咱们可以用集合交集和组合数学来快速算出结果,我给你拆解清楚:

步骤1:先明确各范围的元素数量

首先把你的数值范围转换成具体的元素个数:

  • 宽度集合(10到50):50 - 10 + 1 = 41 个不同值
  • 高度集合(20到40):40 - 20 + 1 = 21 个不同值
  • 两个集合的交集(同时属于宽和高的数值,即20到40):共21个不同值
步骤2:分三类计算唯一无序对

我们要统计的是不重复的无序对{W,H}(也就是(W,H)和(H,W)视为同一个),可以拆成三类分别计算:

第一类:宽和高都在交集区间(20-40)内

这部分又分两种情况:

  • 宽=高的配对:每个数值自己和自己组合,共21个唯一对
  • 宽≠高的配对:从21个数值里选2个不同的,用组合数公式 C(n,2) = n*(n-1)/2,计算得 21*20/2 = 210 个唯一对
    这部分总计:21 + 210 = 231

第二类:宽在10-19(不在交集),高在20-40

因为这部分的宽都小于高的最小值20,所以所有(W,H)都是W<H,不存在反向的(H,W)合法配对(高的范围里没有10-19的数),每个组合都是唯一的。数量为:10 * 21 = 210(10是10-19的元素个数)

第三类:宽在41-50(不在交集),高在20-40

同理,这部分的宽都大于高的最大值40,所有(W,H)都是W>H,反向的(H,W)也不在合法范围内(高的范围里没有41-50的数),每个组合都是唯一的。数量为:10 * 21 = 210(10是41-50的元素个数)

步骤3:总数量求和

把三类的结果加起来:
231 + 210 + 210 = 651

更简洁的一步式计算

如果你想直接用公式一步算出,也可以用「总有序对数量 - 重复计数」的思路:

  1. 总有序对数量:所有宽和高的配对数,即 41 * 21 = 861
  2. 重复的计数:只有当宽和高都在交集里且不相等时,才会出现(W,H)和(H,W)重复的情况,这部分重复的数量就是组合数 C(21,2) = 210(每个无序对被算了两次,需要减去一次重复)
  3. 最终结果:861 - 210 = 651,和分步计算的结果完全一致。

内容的提问来源于stack exchange,提问作者abc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:27:58