나는 첫 번째 게임을 만들고 몇 가지 문제가 발생했습니다. 필자는 항상 7 개의 타일을 가지고 있으며 모든 가능한 조합을 만들 필요가 있습니다 (최대 5040) 파일의 예 : 13 01 02 24 14 12 25 숫자는 13면과 같은면에 몇 개의 숫자가 있는지를 나타냅니다. 3 도트가 있습니다. 결과 예 :C# 도미노 게임에서 가능한 모든 조합 찾기
31 10 02 24 41 12 25
52 21 14 42 20 01 13
31 12 24 41 10 02 25
52 20 01 14 42 21 13
...
어떻게하면됩니까? 나는 재귀를 사용하여 시도했지만 를 작동하지 않았다 이것은 내가 무엇을 가지고 :
사실class Kauliukas
{
public int Dalis1 { get; set; }
public int Dalis2 { get; set; }
public Kauliukas(int dalis1, int dalis2)
{
Dalis1 = dalis1;
Dalis2 = dalis2;
}
public Kauliukas()
{
}
}
class KauliukuKonteineris
{
public const int MaxIlgis = 7;
private Kauliukas[] Kauliukai = new Kauliukas[MaxIlgis];
public int Count { get; set; }
public KauliukuKonteineris(int size)
{
Kauliukai = new Kauliukas[size];
}
public void Add(Kauliukas kauliukas)
{
Kauliukai[Count++] = kauliukas;
}
public Kauliukas Get(int index)
{
return Kauliukai[index];
}
}
class Grandine
{
public static int MaxIlgis = 7;
private Kauliukas[] Kauliukai = new Kauliukas[MaxIlgis];
public int Count { get; set; }
public Grandine(int size)
{
Kauliukai = new Kauliukas[size];
}
public void Add(Kauliukas kauliukas)
{
Kauliukai[Count++] = kauliukas;
}
public Kauliukas Get(int index)
{
return Kauliukai[index];
}
}
class GrandiniuKonteineris
{
public const int MaxGrandines = 5040;
private Grandine[] Grandines = new Grandine[MaxGrandines];
public int Count { get; set; }
public GrandiniuKonteineris(int size)
{
Grandines = new Grandine[size];
}
public void Add(Grandine grandine)
{
Grandines[Count++] = grandine;
}
public Grandine Get(int index)
{
return Grandines[index];
}
}
class Program
{
public const int MaxKauliuku = 7;
public const string DataFile = "Kur3.txt";
public const int MaxGrandiniu = 5040;
static void Main(string[] args)
{
KauliukuKonteineris Duomenys = new KauliukuKonteineris(MaxKauliuku);
Skaitymas(Duomenys);
GrandiniuKonteineris Rezultatai = new GrandiniuKonteineris(MaxGrandiniu);
GrandiniuSudarymas(Duomenys, Rezultatai);
}
/// <summary>
/// Duomenu nuskaitymas is failo ir sukelimas i konteinerine klase
/// </summary>
/// <param name="Duomenys"></param>
public static void Skaitymas(KauliukuKonteineris Duomenys)
{
using (StreamReader reader = new StreamReader(DataFile))
{
string line = reader.ReadLine(); // Nuskaitoma visa eilute
string[] values = line.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); // Padalina skaicius
for(int i=0; i<values.Length; i++)
{
int dalis1 = int.Parse(values[i])/10; // Dvizenkli skaciu padalinus is 10 gaunamas skaitmuo esantis pirmoje pozicijoje
int dalis2 = int.Parse(values[i]) % 10; // Dvizenklio skaiciaus padalinto is 10 liekana - skaitmuo antroje pozicijoje
Kauliukas kauliukas = new Kauliukas(dalis1, dalis2);
Duomenys.Add(kauliukas);
}
}
}
시도한 재귀를 왜 보여주지 않습니까? – Sam07