Я пробовал обновить свой код до этой версии, но все равно не работает:
using System;
namespace RecursiveDomino
{
class Program
{
static void Main()
{
int n = Convert.ToInt32(Console.ReadLine());
bool[] used = new bool[n];
string[] pairList = new string[n];
for (int i = 0; i < n; i++)
{
pairList = Console.ReadLine();
}
int x = Convert.ToInt32(Console.ReadLine());
List results;
results = DominoChains(pairList, x, used);
foreach (string s in results)
{
Console.WriteLine(s);
}
}
static List DominoChains(string[] lista, int x, bool[] used)
{
if (x == 1)
{
List results = new List();
for (int i = 0; i < lista.Length; i++)
{
if (!used)
{
results.Add(lista);
}
}
return results;
}
List finalChains = new List();
List temporaryChains = DominoChains(lista, x - 1, used);
for (int i = 0; i < temporaryChains.Count; i++)
{
for (int j = 0; j < lista.Length; j++)
{
if ((!used[j] && temporaryChains[temporaryChains.Length - 1] == lista[j][0]) || temporaryChains.Count == 0)
{
temporaryChains.Add(lista[j]);
if (temporaryChains.Count == x)
{
finalChains.AddRange(temporaryChains);
}
else { DominoChains(lista, x - 1, used); }
}
}
}
return finalChains;
}
}
}
I have a recursion problem where I have to input into console the following data:
On the first line a natural number equal with the number of tiles I have to input on the following lines (in my example the first number is 6).
On the following lines the domino tiles in the following order:
```lang-none
1 2
1 3
3 4
2 3
3 5
4 5
В последней строке другое число, обозначающее количество плиток, которые необходимо вернуть в каждой отдельной строке (в моем примере это число равно 3).
С помощью этих данных мне нужно отобразить все возможные комбинации пар. Для каждой отдельной строки число второе число из первой пары должно быть равно первому числу следующей пары и так далее. У меня была подсказка для этого задания, где мне нужно объявить промежуточный список, равный функции (используя рекурсию с самого начала), но когда я пытаюсь запустить код, он выдает мне нулевое исключение для intermediaryList.
Также я должен упомянуть, что мне разрешено использовать просто «using System;» Не разрешается использовать что-либо еще.
Пример:
6
1 2
1 3
3 4
2 3
3 5
4 5
3
В консоли отобразится:
1 2 2 3 3 4
1 2 2 3 3 5
1 3 3 4 4 5
2 3 3 4 4 5
I нужно показать все возможные комбинации, и если я не смогу их найти, будет показано N/A.
У меня есть несколько проблем: я понял, что базовый вариант завершает мою рекурсию. неправильно, он всегда вернет мне первую пару. Так что у меня нет возможности попробовать другие элементы. И еще проблема с пробелами:
Моя программа возвращает мне следующее:
1 2 2 3 3 4
1 2 2 3 3 5
Вместо этого:
1 2 2 3 3 4
1 2 2 3 3 5
1 3 3 4 4 5
2 3 3 4 4 5
для этого набора данных:
6
1 2
1 3
3 4
2 3
3 5
4 5
3
using System;
namespace RecursiveDomino
{
class Program
{
static void Main()
{
int n = Convert.ToInt32(Console.ReadLine());
string[] pairList = new string[n];
for (int i = 0; i < n; i++)
{
pairList = Console.ReadLine();
}
int x = Convert.ToInt32(Console.ReadLine());
Console.WriteLine(DominoChain(pairList, x));
}
static string DominoChain(string[] list, int x)
{
string finalList = "";
for (int i = 0; i < list.Length; i++)
{
if (x == 1)
{
return list;
}
}
string temporaryList = DominoChain(list, x - 1);
for (int j = 0; j < list.Length; j++)
{
if (((temporaryList[temporaryList.Length - 1] == list[j][0]) && !temporaryList.Contains(list[j])) || temporaryList == "")
{
finalList += "\n" + temporaryList + " " + list[j];
}
}
return finalList;
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/782 ... rsion-in-c
Как мне решить эту игру в домино, используя рекурсию на C#? ⇐ C#
Место общения программистов C#
-
Anonymous
1712684950
Anonymous
Я пробовал обновить свой код до этой версии, но все равно не работает:
using System;
namespace RecursiveDomino
{
class Program
{
static void Main()
{
int n = Convert.ToInt32(Console.ReadLine());
bool[] used = new bool[n];
string[] pairList = new string[n];
for (int i = 0; i < n; i++)
{
pairList[i] = Console.ReadLine();
}
int x = Convert.ToInt32(Console.ReadLine());
List results;
results = DominoChains(pairList, x, used);
foreach (string s in results)
{
Console.WriteLine(s);
}
}
static List DominoChains(string[] lista, int x, bool[] used)
{
if (x == 1)
{
List results = new List();
for (int i = 0; i < lista.Length; i++)
{
if (!used[i])
{
results.Add(lista[i]);
}
}
return results;
}
List finalChains = new List();
List temporaryChains = DominoChains(lista, x - 1, used);
for (int i = 0; i < temporaryChains.Count; i++)
{
for (int j = 0; j < lista.Length; j++)
{
if ((!used[j] && temporaryChains[i][temporaryChains[i].Length - 1] == lista[j][0]) || temporaryChains.Count == 0)
{
temporaryChains.Add(lista[j]);
if (temporaryChains.Count == x)
{
finalChains.AddRange(temporaryChains);
}
else { DominoChains(lista, x - 1, used); }
}
}
}
return finalChains;
}
}
}
I have a recursion problem where I have to input into console the following data:
On the first line a natural number equal with the number of tiles I have to input on the following lines (in my example the first number is 6).
On the following lines the domino tiles in the following order:
```lang-none
1 2
1 3
3 4
2 3
3 5
4 5
В последней строке другое число, обозначающее количество плиток, которые необходимо вернуть в каждой отдельной строке (в моем примере это число равно 3).
С помощью этих данных мне нужно отобразить все возможные комбинации пар. Для каждой отдельной строки число второе число из первой пары должно быть равно первому числу следующей пары и так далее. У меня была подсказка для этого задания, где мне нужно объявить промежуточный список, равный функции (используя рекурсию с самого начала), но когда я пытаюсь запустить код, он выдает мне нулевое исключение для intermediaryList.
Также я должен упомянуть, что мне разрешено использовать просто «using System;» Не разрешается использовать что-либо еще.
Пример:
6
1 2
1 3
3 4
2 3
3 5
4 5
3
В консоли отобразится:
1 2 2 3 3 4
1 2 2 3 3 5
1 3 3 4 4 5
2 3 3 4 4 5
I нужно показать все возможные комбинации, и если я не смогу их найти, будет показано N/A.
У меня есть несколько проблем: я понял, что базовый вариант завершает мою рекурсию. неправильно, он всегда вернет мне первую пару. Так что у меня нет возможности попробовать другие элементы. И еще проблема с пробелами:
Моя программа возвращает мне следующее:
1 2 2 3 3 4
1 2 2 3 3 5
Вместо этого:
1 2 2 3 3 4
1 2 2 3 3 5
1 3 3 4 4 5
2 3 3 4 4 5
для этого набора данных:
6
1 2
1 3
3 4
2 3
3 5
4 5
3
using System;
namespace RecursiveDomino
{
class Program
{
static void Main()
{
int n = Convert.ToInt32(Console.ReadLine());
string[] pairList = new string[n];
for (int i = 0; i < n; i++)
{
pairList[i] = Console.ReadLine();
}
int x = Convert.ToInt32(Console.ReadLine());
Console.WriteLine(DominoChain(pairList, x));
}
static string DominoChain(string[] list, int x)
{
string finalList = "";
for (int i = 0; i < list.Length; i++)
{
if (x == 1)
{
return list[i];
}
}
string temporaryList = DominoChain(list, x - 1);
for (int j = 0; j < list.Length; j++)
{
if (((temporaryList[temporaryList.Length - 1] == list[j][0]) && !temporaryList.Contains(list[j])) || temporaryList == "")
{
finalList += "\n" + temporaryList + " " + list[j];
}
}
return finalList;
}
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78295270/how-do-i-solve-this-domino-game-using-recursion-in-c[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия