Use java to write the programs
1. Write a program that uses the brute-force approach to solve the 0/1 knapsack problem. Suppose there are n items with weights w1, w2, ..., wn and values v1, v2, ..., vn and a knapsack of capacity W. Use the decrease-by-one technique to generate the power set and calculate the total weights and values of each subset, then find the largest value that fits into the knapsack and output that value.
For example: If there are 3 items with the following weights and values:? weight: 8 4 5? value: 20 10 11?and the capacity of the knapsack is 9, your program should then calculate the total weight and the total value of each subset in the power set:? total weight of subset: 0, 8, 4, 12, 5, 13, 9, 17? total value of subset: 0, 20, 10, 30, 11, 31, 21, 41?The largest value that fits into the knapsack: 21
2. Let a[0..n-1] be an array of n distinct integers. A pair (a[i], a[j]) is said to be an inversion if these numbers are out of order, i.e., i a[j].
For example: if array a contains the following numbers: ? 9, 8, 4, 5? then the number of inversions is 5. ?(inversions are 9 > 8, 9 > 4, 9 > 5, 8 > 4, 8 > 5)
(a) Write a program that uses the brute-force approach to count the number of inversions in the array.
(b) Write a program that uses the divide-and-conquer technique to count the number of inversion in the array.