Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class DList<T1, T2> {
- private ArrayList<T1> m_arr;
- private ArrayList<ArrayList<T2>> m_list_arr;
- public java.util.ArrayList<T1> getM_arr() {
- return m_arr;
- }
- public ArrayList<ArrayList<T2>> getM_list_arr(){
- return m_list_arr;
- }
- public DList() {
- m_arr = new ArrayList<>();
- m_list_arr = new ArrayList<>();
- }
- public void addList(T1 list_id, ArrayList<T2> arr) {
- if (!m_arr.contains(list_id)) //if the id is not the list1
- {
- m_arr.add(list_id); //add id to the list1
- m_list_arr.add(arr); //add the list to the m_list_arr
- } else {
- int ind = m_arr.indexOf(list_id); //if the id is already int the list1, find index of that id
- m_list_arr.add(ind, arr); //add the list to the respective list in m_list_arr
- }
- }
- public void deleteList(int i) {
- if (i >= 0) {
- if (i < m_arr.size()) {
- m_arr.remove(i);
- m_list_arr.remove(i);
- } else {
- System.out.println("Индекс должен быть меньше чем " + m_arr.size());
- }
- } else {
- System.out.println("Индекс не должен быть отрицательным");
- }
- }
- public void deleteList(T1 id) {
- if (m_arr.contains(id)) //if m_arr contains the id, find its index and delete it
- {
- int ind = m_arr.indexOf(id);
- m_arr.remove(ind);
- m_list_arr.remove(ind);
- } else {
- System.out.println("Здесь нет такого элемента");
- }
- }
- public ArrayList<T2> getList(int i) {
- ArrayList<T2> temp_list = null;
- if (i >= 0) {
- if (i < m_arr.size()) {
- temp_list = m_list_arr.get(i);
- } else {
- System.out.println("Индекс должен быть меньше чем " + m_arr.size());
- }
- } else {
- System.out.println("Индекс должен быть неотрицательным");
- }
- return temp_list;
- }
- public ArrayList<T2> getList(T1 id) {
- ArrayList<T2> temp_list = null;
- if (m_arr.contains(id)) {
- temp_list = m_list_arr.get(m_arr.indexOf(id));
- } else {
- System.out.println("Здесь нет элемента с таким значением");
- }
- return temp_list;
- }
- }
- class AWM { // use DLIST
- private DList list=new DList<>();
- public ArrayList<Integer> GetMoneySet(int amount_money,ArrayList<Integer> arr_coins) {
- Arrays.sort(arr_coins.toArray());
- System.out.println("After sorting: ");
- System.out.println(Arrays.toString(arr_coins.toArray()));
- System.out.println();
- list.addList(amount_money,arr_coins);
- Integer temp = amount_money;
- ArrayList<Integer> m_coins=new ArrayList<>();
- //temp 20
- //arr_coins[j] 10
- //m_coins {10}
- for (int j = arr_coins.size()- 1; j >= 0; j--) {
- if (temp - arr_coins.get(j) >= 0)
- {
- m_coins.add(arr_coins.get(j));
- if(amount_money-temp<arr_coins.get(j)) arr_coins.add(j);
- temp -= arr_coins.get(j);
- System.out.println("temp: "+temp);
- System.out.println("arr_coins :"+arr_coins.get(j));
- }
- }
- list.getM_list_arr().set(0,m_coins);
- return list.getM_list_arr();
- }
- }
- public class Main {
- public static void main(String[] args) {
- AWM awm=new AWM();
- ArrayList<Integer> list2=new ArrayList<>();
- list2.add(1);
- list2.add(2);
- list2.add(5);
- list2.add(10);
- var awm1=awm.GetMoneySet(20,list2);
- for(int i=0;i<awm1.size();i++){
- System.out.println(awm1.get(i));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment