All pastes #760991 Raw Edit

Matrimoni

public java v1 · immutable
·published 2007-11-04 15:13 UTC
rendered paste body
/* * MatrimoniStabili.java * * Created on November 3, 2007, 4:28 PM * * To change this template, choose Tools | Template Manager * and open the template in the editor. */package org.algoritmica.alvie.algorithm;import org.algoritmica.alvie.datastructure.List;import org.algoritmica.alvie.datastructure.ListI;import org.algoritmica.alvie.datastructure.Array;import org.algoritmica.alvie.datastructure.ArrayI;import org.algoritmica.alvie.information.ComparableI;import org.algoritmica.alvie.information.IntInformation;/** * * @author ***** *********** */public class MatrimoniStabili<I extends ComparableI<I>>{    private ListI<IntInformation>[] m_preferita;    private int[][] m_rango;    private ListI<IntInformation> m_celibe;    private ArrayI<IntInformation> m_abbinato;        private IntInformation maschio;    private IntInformation femmina;        public MatrimoniStabili(ListI<IntInformation>[] preferita,             int[][] rango,             ListI<IntInformation> celibe,             ArrayI<IntInformation> abbinato)    {        m_preferita = preferita;        m_rango = rango;        m_celibe = celibe;        m_abbinato = abbinato;    }        public void stableMarriage()    {        while(m_celibe.size() != 0)        {            maschio = m_celibe.head();            femmina = m_preferita[maschio.intValue()].head();            m_preferita[maschio.intValue()] = m_preferita[maschio.intValue()].tail();                        if(m_abbinato.elementAt(maschio.intValue()).isLessThan(new IntInformation(0)))            {                m_abbinato.setAt(maschio, femmina.intValue());                m_celibe = m_celibe.tail();            }            else if(m_rango[femmina.intValue()][maschio.intValue()] < m_rango[femmina.intValue()][m_abbinato.elementAt(femmina.intValue()).intValue()])            {                m_celibe.set(m_abbinato.elementAt(femmina.intValue()), m_celibe.tail());                m_abbinato.setAt(maschio, femmina.intValue());            }        }    }}