[难题征解] 反求线性相关数组
gxqcn 2004-06-29 01:29:30 为了引出该问题,特自定义一个概念以方便阐述(可能叙述得不够严谨,或与现有的术语相冲突,欢迎指正):
【线性相关数组】已知一个二维数组 C={c[i][j]}mxn,如果存在两个一维数组 A={a[i]}m、B={b[j]}n,使得 c[i][j]=a[i]+b[j] (0≤i≤m-1,0≤j≤n-1)均成立,则称 C 与 A、B 线性相关,记作“C = A⊙B”。
问题如下:已知二维数组 C 的某个排列 C'(即其 mxn 个元素被随机打乱了),请反求出对应的 A、B,使得 C = A⊙B。
输出要求:
1、A、B均按升序排列(A⊙B 可能得到的仍是 C 的某个排列,但已不影响结果的价值了);
2、如果 m==n,则附加要求 A≤B(按字典排列)。
可简化条件:
1、已确知确实存在 A、B,使 C = A⊙B 成立;
2、规定 C (或 C')所有元素为非负整数,且两两不等,最小元素为 0。
讨论:
1、如果有人可迅速判定“是否存在 A、B,使得 C = A⊙B 成立”的快速算法,欢迎提供;
2、如果满足上述“简化条件”2,则对应的 A、B 也具有相应的性质(所有元素为非负整数,且两两不等,最小元素为 0),欢迎讨论;
3、如果满足上述“简化条件”,在依“输出要求”的前提下,A、B 是否具有唯一性,也欢迎讨论。
备注:不要求给出代码,但须将算法思路阐明。