问题 A: 背包问题
时间限制: 1 Sec  内存限制: 128 MB
提交: 518  解决: 260
[提交][状态][讨论版]
有个背包可承受重量N,现有T类物品 
每类物品重量为Wi,价值为Vi ,每类物品的数量是无穷的, 
这个背包可以装载物品的最大价值是多少?
			
一行,N T 之间用空格隔开 
后面t行,每行:重量Wi,价值Vi
			
测试数据来源http://blog.csdn.net/na_beginning/article/details/62884939!
name  | weight  | value  | 0  | 1  | 2  | 3  | 4  | 5  | 6  | 7  | 8  | 9  | 10  | 
d  | 7  | 9  | 0  | 0  | 1  | 3  | 5  | 5  | 6  | 9  | 10  | 10  | 12  | 
c  | 4  | 5  | 0  | 0  | 1  | 3  | 5  | 5  | 6  | 8  | 10  | 10  | 11  | 
b  | 3  | 3  | 0  | 0  | 1  | 3  | 3  | 4  | 6  | 6  | 7  | 9  | 9  | 
a  | 2  | 1  | 0  | 0  | 1  | 1  | 2  | 2  | 3  | 3  | 4  | 4  | 5  | 
static int[][] F; // 模拟一个(背包容量,物品价值)的表格
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
F[i][j] = F[i - 1][j];/* 不放时候的价值 */
/* 如果放入这件物品之后的价值大于不放,则选择放入物品 */
* C[i] <= j (代表这个物品能装进) && F[i][j] < F[i][j -
* C[i]](代表装上一件物品,已经背包空间正好或者大于能装下这件物品的空间时,这个背包的价值) +
* W[i](加上这件物品的价值) 判断,若是价值更大,则保存这个 结果
if (C[i] <= j && F[i][j] < F[i][j - C[i]] + W[i]) {