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]);
私が見る、あなたが唯一のポイントの座標を格納、問題を解決しようとしたことがありますか?やってみました? – Mahmoud
私は異なるアプローチをしようとしていた(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