seasar2フレームワークが3ケ月ぐらいブランクあってjspとかもなかなか思い出せなかった。
次はたぶん別のフレームワークだけどコーディングの勘ぐらいは取り戻しておきたい。
本日のネタはナップザック問題。動的計画法で解けるアレです。
他言語のソースをjavaに直して何とかしたものですw

public class knapsack {
	public static void main(String[] args) {
		int capacity = 143;
		int[]price={
				10788,10721,10513,10236,9478,
				9478,9111,8831,8831,7693,
				7535,7181,7068,6918,6874,
				6859,6737,6591,6496,6212,
				6017,5912,5786,5708,5574,
				5513,5144,5110,4954,4827,
				4560,4559,4466,4428,4081,
				3886,3247,3217,3064,3016,
				2898,2826,2780,2642,2580,
				2485,2245,2203,1742,2063,
				2058,2013,1996

			};
		int[]weight={
				11,9,12,9,14,
				14,8,9,14,12,
				10,8,13,11,8,
				12,9,12,12,11,
				12,11,11,9,5,
				5,11,6,10,7,
				7,8,8,11,8,
				8,9,9,5,6,
				8,6,11,6,13,
				13,11,12,11,8,
				11,12,11
				};
		System.out.println(computeKnapsack(capacity,price,weight));
	}

	public static int computeKnapsack(int capacity, int[] price, int[] weight) {
		int numItem = price.length;
		int[][] dp = new int[numItem + 1][capacity + 1];
		int[][] g = new int[numItem + 1][capacity + 1];
		for (int c=0;c<=capacity;c++){
			dp[0][c]=0;
			g[0][c]=1;
		}
		for(int i=1;i<=numItem;i++){dp[i][0]=0;}
		for (int c = 1; c <= capacity; c++) {
			dp[1][c] = c < weight[0] ? 0 : price[0];
//			g[0][c]=0;
		}
		for (int i = 2; i <= numItem; i++) {
			for (int c = 1; c <= capacity; c++) {
				if (c < weight[i - 1]) {
					dp[i][c] = dp[i - 1][c];
					g[i][c] = 0;
				} else {
					dp[i][c] = Math.max(dp[i - 1][c], dp[i - 1][c - weight[i - 1]]
							+ price[i - 1]);
					g[i][c] = 0;
					if (dp[i][c]==dp[i - 1][c - weight[i - 1]]
					                        + price[i - 1]){
							g[i][c]=1;
						}
				}
			}
		}
		for(int i=1;i<numItem+1;i++){
			for(int j=1;j<capacity+1;j++){
//				System.out.println("d["+i+"]["+j+"]="+dp[i][j]);
				if(j<=capacity+1){
					System.out.printf("|%5d(%1d,%2d)",dp[i][j],g[i][j],i);
				}
				if(j==capacity){System.out.println("");}
			}
		}

		int c=capacity;
		for (int i=numItem;i>0;i--){
			if(g[i][c]==1){
				System.out.print(price[i-1]+" ");
				c=c-weight[i-1];
			}
		}
		return dp[numItem][capacity];
	}
}

用途?GF(仮)のセンバツ編成を考えるためw
最後に何を選択したかの表示にまだ少しバグがあるけども。
さすがにDB使うまでのものでもないかなぁ....。
これも2,3ケ月前に作った(翻訳した)ものなのでアルゴリズムが思い出せないw