如何按字典顺序枚举无序整数对
对于每对整数 i 和 j(其中 j >= i),给出一个整数 k = k(i,j) 使得
- k(0,0) = 0
- k(i, j2) = k(i,j1)+1 对于 j2 = j1 + 1
- k(i,0) = k(i-1,i-1) + 1 , i >= 1
成立吗?
换句话说,如果从左到右用自然数逐行填充矩阵的左下部分,从 0 开始,给定第 i 行和第 i 列的索引,如何计算单元格的值索引 j <= i?
非常感谢!
what is the algorithm (or rather formula) which, for each pair integers i and j with j >= i, gives an integer k = k(i,j) such that
- k(0,0) = 0
- k(i,j2) = k(i,j1)+1 for j2 = j1 + 1
- k(i,0) = k(i-1,i-1) + 1 , i >= 1
holds?
In other words, if you fill up the left-lower part of matrix row by row from left to right with the natural numbers, starting at 0, how can you compute the value of a cell given the index of its row i and the column index j <= i?
Thank you very much!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Alleo 答案的证明:
首先写下从 j 到 1 的第二个公式,
总结您得到的这些公式:
现在从您的第三个公式:
使用 (1) :
然后
然后因为 k(0,0) = 0
那么
proof of Alleo answer:
first write your second formula from j to 1
sum up these formulas you get :
now from your 3rd formula:
using (1) :
then
then since k(0,0) = 0
then
这是 i*(i+1)/2 + j。欢迎您检查
This is i*(i+1)/2 + j. You are welcome to check