Puzzuramurri
01-07-2007, 17:41
SONO ALLE PRIME ARMI CON JAVA, HO SCRITTO QUESTO PROGRAMMINO CHE MI VIENE COMPILATO MA NON ESEGUITO, O MEGLIO NON RESTITUISCE NIENTE. FORSE IL PROBLEMA STA NELLA MATRICE, SE COSI' FOSSE AVRESTE DEL MATERIALE PER IMPARARE AD USARE LE MATRICI???
GRAZIE
import java.lang.*;
public class Wagnerwhitin {
public static void main(String[] args) {
int t = 4;
int[] d = new int[t];
d[0] = 20;
d[1] = 30;
d[2] = 40;
d[3] = 30;
int[] c = new int[t];
c[0] = 3;
c[1] = 3;
c[2] = 4;
c[3] = 4;
int[] h = new int [t];
h[0] = 2;
h[1] = 2;
h[2] = 1;
h[3] = 1;
int[] a = new int [t];
a[0] = 30;
a[1] = 40;
a[2] = 30;
a[3] = 50;
System.out.println(trovaIstantiProduttivi(4,d, c, a, h));
}
public static int[] trovaIstantiProduttivi (int t, int[] d, int[] c, int[] a,int[] h){
int[][] m;
m = new int[0][0];
int[] l;
l = new int[0];
int[] p;
for(int j=0; j<t; j++){
for(int k=j; k<=t; k++){
int da=0;
while(j<=k){
da += d[j];
}
int ho = 0;
while(j<k){
ho += h[j];
}
int de = 0;
while(j+1<=k){
de += d[j+1];
}
m[j][k] = a[j]+c[j]*da+ho*de;
}
}
for(int k=0; k<=t; k++){
for(int j=0; j<=0; j++){
int[] f;
f = new int[0];
int min;
min = t+1;
f[min] = 1000;
f[0] = 0;
f[k] = f[j-1] + m[j][k];
if(f[k]<f[min]){
min = k;
l[k]=j;
}
}
}
p = new int[0];
p[0] = l[t];
int last = l[t];
while(last!=1){
last = l[last-1];
int[] nuovo;
nuovo = new int[p.length+1];
int i;
for(i=0; i<p.length;i++)
nuovo[i] = p[i];
nuovo[nuovo.length-1] = last;
p =nuovo;
}
return p;
}
}
GRAZIE
import java.lang.*;
public class Wagnerwhitin {
public static void main(String[] args) {
int t = 4;
int[] d = new int[t];
d[0] = 20;
d[1] = 30;
d[2] = 40;
d[3] = 30;
int[] c = new int[t];
c[0] = 3;
c[1] = 3;
c[2] = 4;
c[3] = 4;
int[] h = new int [t];
h[0] = 2;
h[1] = 2;
h[2] = 1;
h[3] = 1;
int[] a = new int [t];
a[0] = 30;
a[1] = 40;
a[2] = 30;
a[3] = 50;
System.out.println(trovaIstantiProduttivi(4,d, c, a, h));
}
public static int[] trovaIstantiProduttivi (int t, int[] d, int[] c, int[] a,int[] h){
int[][] m;
m = new int[0][0];
int[] l;
l = new int[0];
int[] p;
for(int j=0; j<t; j++){
for(int k=j; k<=t; k++){
int da=0;
while(j<=k){
da += d[j];
}
int ho = 0;
while(j<k){
ho += h[j];
}
int de = 0;
while(j+1<=k){
de += d[j+1];
}
m[j][k] = a[j]+c[j]*da+ho*de;
}
}
for(int k=0; k<=t; k++){
for(int j=0; j<=0; j++){
int[] f;
f = new int[0];
int min;
min = t+1;
f[min] = 1000;
f[0] = 0;
f[k] = f[j-1] + m[j][k];
if(f[k]<f[min]){
min = k;
l[k]=j;
}
}
}
p = new int[0];
p[0] = l[t];
int last = l[t];
while(last!=1){
last = l[last-1];
int[] nuovo;
nuovo = new int[p.length+1];
int i;
for(i=0; i<p.length;i++)
nuovo[i] = p[i];
nuovo[nuovo.length-1] = last;
p =nuovo;
}
return p;
}
}