1 import java
.util
.ArrayList
;
2 import java
.util
.LinkedList
;
3 import java
.util
.Collections
;
4 import java
.util
.Random
;
5 import java
.util
.Arrays
;
7 import java
.util
.Comparator
;
10 /* Generate a random solution which not is necessarily optimal. */
11 public class LubbersSolver
implements IPetproblemSolver
{
17 public Tuple(int[] l
, int s
) {
23 public String
toString() {
24 return score
+ ": " + Arrays
.toString(list
);
28 public int factorial(int n
) {
29 return n
==1 ?
1 : n
*factorial(n
-1);
32 public void permute(int[] num
, int start
, List
<int[]> result
) {
33 if(start
== num
.length
) {
34 result
.add(num
.clone());
36 for(int i
= start
; i
<num
.length
; i
++){
40 permute(num
, start
+1, result
);
47 private static int computeCompatibility(int[][] matrix
, int[] pairing
)
50 for(int n_i
= 0; n_i
< pairing
.length
; n_i
++)
52 int m_i
= pairing
[n_i
];
55 sum
+= matrix
[n_i
][m_i
];
62 public int[] solve(int n
, int m
, final int[][] compatibility
) {
63 System
.out
.println("n: " + n
+ " m: " + m
);
64 int[] possibilities
= new int[n
];
65 for(int i
= 0; i
<n
; i
++){
66 possibilities
[i
] = i
>=m ?
-1 : i
;
70 List
<int[]> ps
= new LinkedList
<int[]>();
71 permute(possibilities
, 0, ps
);
72 return Collections
.max(ps
, new Comparator
<int[]>(){
74 public int compare(int[] a
, int[] b
){
75 return computeCompatibility(compatibility
, a
) - computeCompatibility(compatibility
, b
);
80 System
.out
.println("not equal...");