OSDN Git Service

cflib は plugins プロジェクトから,Stigmata直下のプロジェクトに移行したため,このリポジトリからは削除した.
[stigmata/stigmata-plugins.git] / wsp / src / main / java / jp / sourceforge / stigmata / birthmarks / wsp / WeightCalculator.java
1 package jp.sourceforge.stigmata.birthmarks.wsp;
2
3 /**
4  * Weight を計算するためのクラス.
5  * 
6  * @author Haruaki Tamada
7  */
8 public class WeightCalculator{
9     public int calculateWeight(int[][] wcs){
10         int weight = 0;
11         boolean[][] availableFlag = new boolean[wcs.length][wcs[0].length];
12         for(int i = 0; i < wcs.length; i++){
13             for(int j = 0; j < wcs[i].length; j++){
14                 availableFlag[i][j] = true;
15             }
16         }
17
18         int length = wcs.length;
19         if(length < wcs[0].length){
20             length = wcs[0].length;
21         }
22         for(int k = 0; k < length; k++){
23             int max = Integer.MIN_VALUE;
24             int column = -1;
25             int row = -1;
26             for(int i = 0; i < wcs.length; i++){
27                 for(int j = 0; j < wcs[i].length; j++){
28                     if(max < wcs[i][j] && availableFlag[i][j]){
29                         max = wcs[i][j];
30                         row = i;
31                         column = j;
32                     }
33                 }
34             }
35             if(column >= 0 && row >= 0){
36                 for(int i = 0; i < wcs.length; i++){
37                     availableFlag[i][column] = false;
38                 }
39                 for(int j = 0; j < wcs[0].length; j++){
40                     availableFlag[row][j] = false;
41                 }
42                 weight += wcs[row][column];
43             }
44         }
45
46         return weight;
47     }
48 }