2017-12-16 8 views
1

cを歩いて見つけます。 私はNxM(N:行、M:cols)の行列を持っています。ロボットが行列を歩いているとき、彼は下または右のいずれかに行くことができます(対角線の移動は許されません)。常に最左端の角から開始します。 ロボットは、移動する各セルから「宝物」を収集しています。いくつかの収集ポイントが彼のために割り当てられ、彼は収集ポイントに宝物を運ばなければならない(そして、それに到達した後、彼はさらに行くことができない)。 私の仕事は、ほとんどの宝物を実施することが可能であり、それがどのように多くであるCPに決定することです。 私はプロセスの制限もあります:最大実行時間0.2秒と最大使用RAM 32 MB。二次元配列のゲーム - 私は私の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

あなたは本当にすべての可能な方法、唯一の最高のものを見つける必要はありません。長さが2で最高のもの、など

あなたは(幅優先探索別名)「波」と呼ばれるアルゴリズムを実装する必要があります - ので、最初のものの中から、次に、長さが1で可能な限り最高の方法を見つけます。最初のセルから始めて、すべての隣接セルに値(スコア)を割り当てる、リストにそれらを入れて、あなたは、マトリックス内のすべてのセルを評価するまで、そのリストを通して作業を続けます。簡単な実装で

外観は、ここでの問題(同様同じではないの):https://github.com/zdanev/mazekata

関連する問題