2017-12-16 23 views
1

C# 프로그래밍 할당에 문제가 있습니다. NxM (N : 행, M : cols) 행렬이 있습니다. 로봇이 행렬을 따라 걷고 있는데, 아래 또는 오른쪽으로 이동할 수 있습니다 (대각선 이동이 허용되지 않음). 항상 맨 위의 맨 왼쪽 모서리부터 시작합니다. 로봇이 이동하는 각 셀에서 "보물"을 수집 중입니다. 어떤 수집 지점이 그에게 할당되고, 그는 수집 지점으로 보물을 옮겨야합니다 (그리고 그가 도달하면 그는 더 이상 갈 수 없습니다). 내 임무는 가장 보물을 운반 할 수있는 CP와 그 수를 결정하는 것입니다. 프로세스에 대한 제한도 있습니다 : 최대 실행 시간 0.2 초 및 최대 사용 RAM 32MB.2 차원 배열 게임 - 걷고 찾기 C#

필자는 모든 경로를 찾아보고 각 경로의 보물을 계산하고 최대 값을 검색 한 다음 최대 값을 갖는 CP를 검색해야합니다.

주어진 CP에 대한 모든 경로를 수집하는 방법이 누락되었습니다.

현재 코드 :

 string[] firstline = Console.ReadLine().Split(new char[] { ' ' }); 
     int N = Convert.ToInt32(firstline[0]); // N 
     int M = Convert.ToInt32(firstline[1]); // M 
     int K = Convert.ToInt32(firstline[2]); // no of treasures 
     int G = Convert.ToInt32(firstline[3]); // no of CPs 

     int[,] TREASURES = new int[K, 2]; // collecting the location for each tres 
     for (int i = 0; i < K; i++) 
     { 
      string[] line = Console.ReadLine().Split(new char[] { ' ' }); 
      TREASURES[i, 0] = Convert.ToInt32(line[0]); // row 
      TREASURES[i, 1] = Convert.ToInt32(line[1]); // col 
     } 

     int[,] CPS = new int[G, 2]; // same for CPs 
     for (int i = 0; i < G; i++) 
     { 
      string[] line = Console.ReadLine().Split(new char[] { ' ' }); 
      CPS[i, 0] = Convert.ToInt32(line[0]); 
      CPS[i, 1] = Convert.ToInt32(line[1]); 
     } 

     (...) 

     int C = 0; // The count of max treasures 
     int CP = 0; // The answer CP's index 
     Console.WriteLine(C); 
     Console.WriteLine("{0} {1}", CPS[CP,0], CPS[CP,1]); 
+0

, 당신은, 당신은 단지 좌표 점을 저장하는 문제를 해결하기 위해 시도하지 않은? 시도해 봤어? – Mahmoud

+0

나는 다른 접근법을 시도했다. (http://www.geeksforgeeks.org/print-all-possible-paths-from-top-left-to-bottom-right-of-a-mxn-matrix/), (https : //stackoverflow.com/questions/41409100/finding-all-possible-paths) 그러나 나는 그들을 구현하는데 성공하지 못했다. – benyogyerek

답변

2

당신이이 정말 가능한 모든 방법 만이 가장 좋은 사람을 찾을 필요가있다. 그래서 먼저 길이 1, 길이 2의 가장 좋은 방법 등을 찾으십시오.

"파도"(일명 너비 우선 검색) 알고리즘을 구현해야합니다. 첫 번째 셀부터 시작하여 매트릭스의 모든 셀을 평가할 때까지 모든 인접 셀에 값 (점수)을 지정하고 목록에 넣은 다음 해당 목록을 통해 작업을 계속하십시오.

간단한 구현에서 보면 (유사의 아닌 동일) 여기에 문제가 : https://github.com/zdanev/mazekata 내가 볼