Extras din laborator
1. Enunt:
Se considera un set de date ale unor elefanti (greutate si coeficient de inteligenta). Se cere sa se gaseasca o secventa cat mai lunga a datelor de intrare astfel incat greutatile sa creasca, iar IQ-urile sa descreasca.
Explicatie:
La intrare se vor da datele pentru elefanti, cate unul pe fiecare linie. Datele pentru un anumit elefant constau in 2 intregi intre 1 si 10000: primul reprezinta greutatea sa in Kg si al doilea reprezinta IQ-ul sau in sute de puncte IQ. Doi elefanti pot avea aceeasi greutate, acelasi IQ, sau chiar aceeasi greutate si IQ.
Programul trebuie sa furnizeze la iesire o secventa de linii de date; prima linie va contine un numar n; urmatoarele n linii vor contine un singur intreg pozitiv (fiecare reprezentand un elefant). Daca acesti intregi sunt a[1], a[2], ..., a[n], si vectorii de intrare au fost notati cu G[] si Q[] (G - greutai si Q - coeficienti de inteligenta), atunci trebuie sa respecte conditiile:
G[a[1]] < G[a[2]] < ... < G[a[n]]
si
Q[a[1]] > Q[a[2]] > ... > Q[a[n]]
Numarul n trebuie sa fie cel mai mare posibil. Toate inegalitatile sunt stricte: greutatile trebuie sa fis strict crescatoare si IQ-urile strict descrescatoare. Pot exista mai multe iesiri corecte pentru acceasi intrare; programul trebuie sa furnizeze doar una.
Cod sursa:
/* Problema elefantilor - programare dinamica
*/
package progDinamica.elefanti;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.util.*;
public class Elefanti extends Applet implements ItemListener, ActionListener
{
private Label labelN, labelG, labelI, labelRez;
private TextField textN, textRez, textG, textQ;
private Button butonRez;
private Choice modDate;
private Panel panel1, panel2, panel3, panel4;
private int n;
private String mod = "Aleator";
private Elefant valori[];
private Random r;
public void init()
{
r = new Random( System.currentTimeMillis() );
labelN = new Label(" Numar elefanti = ");
textN = new TextField(3);
n = Math.max( r.nextInt(15 + 1) , 8);
textN.setText("" + n);
textN.setEditable(false);
panel1 = new Panel();
panel1.setLayout(new FlowLayout());
panel1.add(labelN);
panel1.add(textN);
labelG = new Label("Greutatea :");
labelI = new Label("Inteligenta:");
valori = new Elefant[n];
textG = new TextField(72);
textQ = new TextField(72);
String textGreut = "", textIntel = "";
for(int i = 0; i < n; i++)
{
int G = Math.max(r.nextInt(100 + 1), 1) * 100;
int Q = Math.max(r.nextInt(100 + 1), 1) * 100;
valori[i] = new Elefant(G, Q, i);
textGreut += G + " ";
textIntel += Q + " ";
}
textG.setText(textGreut);
textG.setEditable(false);
textQ.setText(textIntel);
textQ.setEditable(false);
panel2 = new Panel();
panel2.setLayout(new GridLayout(6, 1));
panel2.add(labelG);
panel2.add(textG);
panel2.add(labelI);
panel2.add(textQ);
panel2.add(new Label(""));
panel2.add(new Label(""));
modDate = new Choice();
modDate.add("Aleator");
modDate.add("Tastatura");
butonRez = new Button(" Cauta subsir ");
panel3 = new Panel();
panel3.setLayout(new GridLayout(1, 4, 30, 1));
panel3.add(new Label(""));
panel3.add(modDate);
panel3.add(butonRez);
panel3.add(new Label(""));
Preview document
Conținut arhivă zip
- Ingineria Programarii - Probleme.doc