ラウンドの最大コストと最小コストを見つけるために Java でプログラムを実行しています。しかし、私はすべてのラウンドを分析する必要があり、子供を返します。
andが trueの場合、再帰を実行できます。M[i][j]
M[k][l]
現在、再帰は機能しませんが、シミュレーションは有効です。
これを行う方法がわかりません。私のコードは次のとおりです。
import IIC1103Package.*;
public class jjj {
public static void main(String[] args) {
int[][] a = archivoAMatriz("Hola");
imprimirMatriz(a);
estimacion(3, 3, "Hola");
int[] asa = {3,5,6,1,6,1};
System.out.println(hallarminimo(asa));
}
static int[][] archivoAMatriz(String input){
ArchivoDeLectura a = new ArchivoDeLectura();
String aux = "";
String [] aux2;
int filas = 0;
int columnas = 0;
if (a.abrir(input)) {
aux = a.leer();
aux2 = aux.split(",");
filas = Integer.parseInt(aux2[0]);
columnas = Integer.parseInt(aux2[1]);
}
else{
Usuario.mensaje("Ese archivo no existe");
}
int[][] matriz = new int[filas][columnas];
while (!a.EOF()) {
for (int i = 0; i < matriz.length; i++) {
aux = a.leer();
aux2 = aux.split(",");
for (int j = 0; j < matriz.length; j++) {
matriz[i][j] = Integer.parseInt(aux2[j]);
}
}
}
a.cerrar();
return matriz;
}
static void imprimirMatriz(int[][] a){
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[0].length; j++){
System.out.print(a[i][j] + " ");
}
System.out.println();
}
}
static int hallarminimo(int[] a){
int ret = 0;
for (int i = 0; i < a.length; i++) {
ret = a[i];
if (i>0) {
if (a[i]<=a[i-1]) {
ret = a[i];
}
}
}
return ret;
}
static void estimacion(int simulaciones, int n, String output){
int[][] a = archivoAMatriz(output);
int aux = 0;
int cont = 0;
int minimo = 0;
int[] aux2 = new int[n+1];
for (int i = 0; i <= simulaciones; i++) {
minimo = hallarminimo(aux2);
if (cont>=1) {
if (hallarminimo(aux2)<minimo) {
minimo=hallarminimo(aux2);
}
}
for (int j = 0; j <= n; j++) {
int k = Aleatorio.entero(0,a.length-1);
int j2 = Aleatorio.entero(0, a.length-1);
if (a[k][j2]>0) {
aux+=a[k][j2];
aux2[j] = a[k][j2];
if (j==0) {
cont = 1;
}
}
}
}
System.out.println("El costo promedio de los viajes es: " + aux/(n*simulaciones));
System.out.println("El costo mìnimo de los viajes es: " + minimo);
}
}