您的位置:首页 > 其它

123456789=15

2007-04-12 11:30 232 查看
using System;
using System.Collections.Generic;
using System.Text;

namespace 等於15
{
class Program
{
static int[] num;
static int tab = 0;
static void Main(string[] args)
{
///隨機生成不重複1-9的九個數字
do
{
rd();
cr();
} while (15 != num[3] + num[4] + num[5]);//因為當第一行等於456的時候就不能算後面的了
do
{
rd();
cr();
} while (15 != num[1] + num[4] + num[7]);//因為當第一列等於456的時候就不能算後面的了
///如果一撇不等于15
///讓一撇等於15
if (15 != num[0] + num[4] + num[8])
do
{
for (int i = 0; i < 8; i += 3)
{
tab = num[i];
num[i] = num[i + 2];
num[i + 2] = num[i + 1];
num[i + 1] = tab;
}
} while (15 != num[0] + num[4] + num[8]);
///如果一捺不等于15
if (15 != num[2] + num[4] + num[6])
{
Xa(0);
}
///如果一捺还不等于15
if (15 != num[2] + num[4] + num[6])
{
Xa(1);
}
///输出排好的数
for (int i = 0; i < 9; i++)
{
Console.Write(num[i] + " ");
if ((i + 1) % 3 == 0)
Console.Write("/n");
}

}
/// <summary>
/// 撇上的两组数交换
/// </summary>
/// <param name="No">第一组还是第二组</param>
public static void Xa(int No)
{
int[,] ybk ={ { 0, 0 }, { 1, 3 } };
///第一列和第二列交替或是第二列和第三列交替
for (int i = 0; i < 8; i += 3)
{
tab = num[i + ybk[No, 0]];
num[i + ybk[No, 0]] = num[i + ybk[No, 0] + 1];
num[i + ybk[No, 0] + 1] = tab;
}
///第一行和第二行交替或是第二行和第三行交替
for (int i = 0; i < 3; i++)
{
tab = num[i + ybk[No, 1]];
num[i + ybk[No, 1]] = num[i + ybk[No, 1] + 3];
num[i + ybk[No, 1] + 3] = tab;
}
}
/// <summary>
///隨機生成不重複1-9的九個數字
/// </summary>
public static void rd()
{
num =new int[]{0,0,0,0,0,0,0,0,0};
Random rd = new Random();
int n = 0;
while (n < 9)
{
bool y = true;
tab = rd.Next(1,10);
for (int i = 0; i < 9; i++)
if (tab == num[i])
{
i = 9;
n--;
y = false;
}
if (y)
num
= tab;
n++;
}
}
/// <summary>
/// 每行等於15每列等於15
/// </summary>
public static void cr()
{
for (int i = 0; i < 4; i += 3)
for (int j = i + 1; j < 8; j++)
for (int k = j + 1; k < 9; k++)
if (15 == num[i] + num[j] + num[k])
{
tab = num[j];
num[j] = num[i + 1];
num[i + 1] = tab;

tab = num[k];
num[k] = num[i + 2];
num[i + 2] = tab;
k = 9;
j = 8;
}
for (int i = 0; i < 2; i++)
for (int j = 3 + i; j < 6; j++)
for (int k = 6 + i; k < 9; k++)
if (15 == num[i] + num[j] + num[k])
{
tab = num[i + 3];
num[i + 3] = num[j];
num[j] = tab;

tab = num[i + 6];
num[i + 6] = num[k];
num[k] = tab;
k = 9;
j = 6;
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: