프로그램의 일부를 썼지 만 계속할 방법을 찾지 못했습니다. 이것은 제 숙제이며 10 일 동안 열심히 노력하고 있으며 시간이 곧 만료됩니다. 내 프로그램 요구 사항 : a) 키워드로 N을 입력으로 가져옵니다. b) 1과 N * N 사이의 임의의 정수를 생성하십시오. N c)이 정수로 행렬을 채우십시오. 이 작업을 수행했지만 더 많은 작업을 수행 할 수 없었습니다.행렬에서 최단 경로를 찾는 데 문제가 있습니다.
예 : 예를 들어 사용자가 입력 할 때 3을 입력합니다. 매트릭스
1 2~6
4 8 5
3 7 9
추천 프로그램 복귀 최단 경로 1,2,6,5,7이다. 다른 예시적인 사용자
14 11 6 8
15 3 16 1
104 2~5
12 9 7 13
같은 입력 및 프로그램 복귀 매트릭스 4 입력 최단 경로는 14,11,3,4,2,5,13,
일 수 있으며 교차 단계는 경로에 허용되지 않습니다.
내 코드는 다음과 같습니다.
import java.util.*;
public class Challenge1 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter a value for the matrix size.");
int length = input.nextInt();
int[][] x = randomMatrix(length);
for (int i = 0; i < x.length; i++) {
for (int j = 0; j < x[i].length; j++) {
System.out.print(x[i][j] + " ");
}
System.out.println();
}
}
public static int[][] randomMatrix(int n) {
Random r = new Random();
int[][] matrix = new int[n][n];
boolean[] trying = new boolean[n * n];
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length; j++) {
matrix[i][j] = r.nextInt(n * n) + 1;
if (trying[matrix[i][j] - 1] == false)
trying[matrix[i][j] - 1] = true;
else {
while (trying[matrix[i][j] - 1] == true) {
matrix[i][j] = r.nextInt(n * n) + 1;
}
trying[matrix[i][j] - 1] = true;
}
}
}
return matrix;
}
}
이 숫자는 최단 경로를 찾는 데 중요한 의미가 있습니까? 명확히하기 위해 나는 당신이'더 많은 것 => 이웃의 수를 확인하고 가장 작은 것으로 계속할 것입니다. '라는 말을 모른다. 그것은 단지 이해할 수 없다. – lared
나는 경로가 왼쪽 상단 모서리에서 시작하여 오른쪽 하단 모서리에 끝나야한다고 생각합니다. 그 비용은 경로에있는 항목의 합계가됩니다. – Codor
프로그램은 이웃 수를 확인하고 가장 작은 숫자로 계속됩니다. – ZpCikTi