我需要帮助找到一个有效的算法来解决这个问题:
给定n个未排序的整数集,找到n及其交叉点的所有可能组合.
例如:
输入(n = 3):
集1 =
1,10,6,11,14,3集2 = 3,7,11,9,5
集3 = 11,6,9,1,4
输出:
设置1和2:3,11
设置1和3:1,6
设置2和3:9,11
设置1,2和3:11
我想首先找到所有可能的集合组合,然后使用算法找到这里找到的n个集合的交集.不过,我担心这种方法的时间效率.
如果你能找到比我天真的方法更好的东西,伪代码的答案将是最有帮助的.
我经常在我的工作地点处理一个庞大的,没有很好记录的,面向对象的Perl回购.在维护代码的同时,我经常需要跟踪从其他类继承的内容,以便我能够理解他们正在做什么.例如,我需要弄清楚$self->mystery它在做什么以及它在做什么:
package Foo::Bar;
use Moose;
use Method::Signatures;
use Foo::Bar::Element;
use Foo::Bar::Function;
use base qw (Baz::Foo::Bar);
method do_stuff ($some_arg) {
# mystery is not defined in Foo::Bar
my $mystery = $self->mystery;
$mystery->another_mystery($some_arg);
}
Run Code Online (Sandbox Code Playgroud)
我经常发现自己花费太多时间来追踪父类.所以我的问题是,有一个简单的方法让我弄清楚$self->mystery从哪里来的?或者换句话说,我需要找到声明神秘的地方.
通过"简单的方式",我并不是指使用ack或grep通过文件串搜索.我希望有一些我可以安装和使用的调试模块,这可以帮助我一些见解.
谢谢.