[难题征解] 反求线性相关数组(续)
gxqcn 2006-01-06 10:34:52 >> I 前言
================
为了活跃论坛气氛,抛出一个难题。该话题曾在 2004 年被讨论过,但并没有得到彻底解决(为防论坛强制结帖而提前结帖),有兴趣的朋友请先浏览:http://topic.csdn.net/TopicFiles/2004/06/29/13/3131084.xml
>> II 引子
================
为了引出该问题,特自定义一个概念以方便阐述(可能叙述得不够严谨,若与现有的术语相冲突,欢迎指正):
【线性相关数组】已知一个二维数组 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”。
>> III 问题
================
已知二维数组 C 的某个排列 C'(即其 mxn 个元素被随机打乱了),且其所有元素为非负整数,且两两不等,最小元素为 0。请反求出对应的 A、B,使得 C = A⊙B(其中 A、B 均为非递减的非负整数数组;如果 m==n,则附加要求 A≤B(按字典排列))。
可简化条件:已确知一定存在 A、B,使 C = A⊙B 成立;
备注:不要求给出代码,但须将算法思路阐明。
>> IV 讨论
================
1、如果有人可迅速判定“是否存在 A、B,使得 C = A⊙B 成立”的快速算法,欢迎提供;
2、如果满足上述“简化条件”,(A, B) 是否具有唯一性,也欢迎讨论。
>> V 例子
================
例如,已知 3x3 的矩阵 { { 3, 8, 1 }, { 2, 4, 6 }, { 7, 0, 5 }},
应求得 A={ 0, 1, 2 },B={ 0, 3, 6 }.