题目描述
电路板排列问题是大规模电子系统设计中提出的问题。该问题的提法是,将n块电路板以最佳排列方案插入方案。
设B={1,2,…,n}是n块电路板的集合。集合L={N1 ,N2 ,…,Nm }是n块电路板的m个连接块。其中,每个连接Ni 是B的一个子集,且Ni 中的电路板用同一根导线连接在一起。例如,设n=8,m=5。给不定期n块电路板用其m个连接块如下:
B={1,2,3,4,5,6,7,8}
L{N1 ,N2 ,N3 ,N4 ,N5 }
N1 ={4,5,6};N2 ={2,3};N3 ={1,3}
N4 ={3,6};N5 ={7,8}
这8块电路板的一个可能的排列如图所示。在最小长度电路板排列问题中,连接块的长度是指该连接块中第1块电路板到最后1块电路板之间的距离。例如,在图9所示的电路板排列中,连接块N4的第一块电路板在插槽3中,它的最后1块电路板在插槽6中,因此N4 的长度为3。同理N2 的长度为2。图9中连接块最大长度为3。试设计一个回溯法找出所给n个电路板的最佳排列,使得m个连接块中最大长度达到最小。
对于给定的电路板连接块,设计一个算法,找出所给n个电路板的最佳排列,使得m个连接块中最大长度达到最小。
输入格式
第1行2个整数n和m(1≤n,m≤20)。接下来的n行中,每行m个整数。第k行的第j个数为0表示电路板k不在第j个连接块中,为1表示电路板k在第j个连接块中。
输出格式
第一行为最大连接长度的最小值;接下来的一行是最佳排列。
样例
输入样例
8 5
1 1 1 1 1
0 1 0 1 0
0 1 1 1 0
1 0 1 1 0
1 0 1 0 0
1 1 0 1 0
0 0 0 0 1
0 1 0 0 1
输出样例
4
5 4 3 1 6 2 8 7