class Program
{
static int[] a;
static int k;
static int SIZE = 4;
static void Main(string[] args)
{
a = new int[20];
bkp();
System.Console.ReadLine();
}
static void bkp()
{
k = 1;
a[k] = 0;
bool getSuccesor;
while (k > 0)
{
do
{
getSuccesor = HaveSuccesor();
}
while (getSuccesor && !IsValid());
if (getSuccesor)
{
if (IsValidSolution())
{
ShowSolution();
}
else
{
k++;
a[k] = 0;
}
}
else
{
a[k] = 0;
k--;
}
}
}
static bool HaveSuccesor()
{
if (a[k] < SIZE)
{
a[k]++;
return true;
}
else
return false;
}
public static bool IsValid()
{
if (k > 1)
if (a[k] < a[k - 1]) return false;
for (int i = 1; i < k; i++)
if (a[i] == a[k]) return false;
return true;
}
public static bool IsValidSolution()
{
if(k==SIZE) return true;
return false;
}
static void ShowSolution()
{
for (int i = 1; i < = SIZE; i++)
System.Console.Write(a[i] + " ");
System.Console.Write(Environment.NewLine);
}
static void ShowTowers()
{
for (int i = 1; i < = SIZE; i++)
{
for (int j = 1; j < = SIZE; j++)
{
if(a[i]==j)
System.Console.Write("T");
else
System.Console.Write("*");
}
System.Console.Write(Environment.NewLine);
}
System.Console.Write(Environment.NewLine);
}
}
}
Friday, June 15, 2012
Subscribe to:
Posts (Atom)