Buenos días señores,
Les cuento que me estoy ahogando en un vaso de agua con un método que no me imprime de la manera que yo necesito. El código que tengo es el siguiente:
CLASE A
public class Varilla {
int z = 0;
public int getZ() {
return z;
}
public void setZ(int z) {
this.z = z;
}
public int Cut_Rod(int p[], int n) {
if(n >= p.length ){
//throw new Exception("rod of length can not grater than the price array length");
}
if (n == 0) {
return 0;
}
int q = Integer.MIN_VALUE;
for (int i = 1; i <= n; i++) {
q = Math.max(q, (p + Cut_Rod(p, n - i)));
}
return q; -> Este return lo mando a la clase B donde me imprime sin problemas
}
public int Extended_Bottom_Up_Cut_Rod(int p[], int n) {
//int z=0;
if(n >= p.length ){
//throw new Exception("rod of length can not grater than the price array length");
}
int r[] = new int[n + 1];
int s[] = new int[n + 1];
r[0] = 0;
for (int j = 1; j <= n; j++) {
int q = Integer.MIN_VALUE;
for (int i = 1; i <= j; i++) {
if (q < (p + r[j - i])) {
q = p + r[j - i];
s[j] = i;
}
} r[j] = q;
}
for (int i = 0; i < n; i++) {
z = s[n];
System.out.print(z + " "); Si lo imprimo por esta parte me sale correcto ya que el arroja las posiciones donde se hace el corte de la vara, ejemplo, se cortó la vara 4 veces en la posición 2 2 ò se cortó en la posición 3 2 o se corto 4 veces en la misma posición 1 1 1 1. Pero yo quiero que esto que se imprime aquì se guarde en una varible para enviarla al otro metodo y que desde ese otro metodo pueda mandarlo a un jlabel para que se imprima tal cual como se hace con el system.out.print
n = n - z;
return z; -> Esta valiable z la cree para almacenar el vector s[n], y poder enviarlo a la otra clase, pero cuando se imprime por el otro lado solo sale 1 posiciòn y no como lo hace en la parte anterior.
}
return 0;
}
}
CLASE B
public class CapturaDatos {
int aux =0;
int n = 0;
int y = 0;
int z =0;
public int getAux() {
return aux;
}
public void setAux(int aux) {
this.aux = aux;
}
public int getN() {
return n;
}
public void setN(int n) {
this.n = n;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public int getZ() {
return z;
}
public void setZ(int z) {
this.z = z;
}
public int capturar(int tamPesos , int LongVara){
this.aux = tamPesos;
this.n = LongVara;
//int[] p = new int [aux];
int[] p = {0, 1, 5, 8, 9, 10, 17, 17, 20, 24, 30};
for (int i=0; i<p.length;i++){
//p =aux;
//p = (int)(Math.round(Math.random()*99+1));
}
if(n >= p.length || n <= 0){
}
//System.out.print("[Cut_rod] Rod of Lenght = "+n+" and solution = ");
Varilla rd = new Varilla();
y = rd.Cut_Rod(p, n);
//System.out.println(y);
System.out.print("[Extended_Bottom_Up_Cut_rod] Rod of Lenght = "+n+" and the cuts => ");
Varilla rd3 = new Varilla();
z= rd3.Extended_Bottom_Up_Cut_Rod(p, n);
//rd3.Extended_Bottom_Up_Cut_Rod(p, n);
System.out.println(z + " ");
return 1;
}
}
Entonces alguna idea muchachos, se los agarezco