Десятка git и единица измерения git чисел - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть этот код

int[,] array = new int[,]{ {34, 21, 32, 41, 25},
                           {14 ,42, 43, 14, 31},
                           {54, 45, 52, 42, 23}, 
                           {33, 15, 51, 31, 35}, 
                           {21, 52, 33, 13, 23} };

            for (int i = 0; i < array.GetLength(1); i++)
            {
                for (int j = 0; j < array.GetLength(0); j++)
                {
                    Console.Write(array[i, j] + " ");
                }
                Console.WriteLine();
            }

, и мне нужно найти определенное число c (сокровище). Для каждого значения число di git представляет номер строки, а число di git представляет номер столбца ячейки, содержащей следующую подсказку. Начиная с верхнего левого угла (в 1,1), я должен использовать ключи, чтобы вести поиск в массиве. (Первые три подсказки - 11, 34, 42). Сокровище - это клетка, значение которой совпадает с ее координатами. Программа должна выводить ячейки, которые она посещает во время поиска.

Я сделал просто:

Console.WriteLine("The next clue is: {0}", array[0, 0]);
Console.WriteLine("The next clue is: {0}", array[2, 3]);
Console.WriteLine("The next clue is: {0}", array[3, 2]);
Console.WriteLine("The next clue is: {0}", array[0, 4]);

и так далее, но проблема в том, что если я изменю массив на set По другому маршруту программа выведет неверный путь. Таким образом, решение должно быть динамическим c и находить сокровища независимо от содержимого массива.

Моя проблема в том, что я не знаю, как сделать, чтобы найти десятичные числа * git чисел и ди git.

. Может кто-нибудь помочь мне с этим?

1 Ответ

0 голосов
/ 06 мая 2020

Чтобы проиллюстрировать мой комментарий: код ниже и Fiddle

(я добавил HashSet<int>, чтобы отследить, какие ячейки уже были посещены, и избежать бесконечного l oop)

int[,] array = new int[,]
{
    {34, 21, 32, 41, 25},
    {14 ,42, 43, 14, 31},
    {54, 45, 52, 42, 23}, 
    {33, 15, 51, 31, 35}, 
    {21, 52, 33, 13, 23} 
};

int currentCoordinates = 11;
bool treasureFound = false;
var visitedCells = new HashSet<int>();

while (!treasureFound && !visitedCells.Contains(currentCoordinates))
{
    int currentRowIndex = currentCoordinates / 10;
    int currentColumnIndex = currentCoordinates % 10;

    int nextCoordinates = array[currentRowIndex - 1, currentColumnIndex - 1];
    if (nextCoordinates == currentCoordinates)
    {
        treasureFound = true;
    }
    else
    {
        visitedCells.Add(currentCoordinates);
        currentCoordinates = nextCoordinates;
    }   
}

if (treasureFound)
{
    Console.WriteLine($"Treasure found in cell {currentCoordinates}");
}
else
{
    Console.WriteLine("No treasure");
}   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...