111,126
社区成员
发帖
与我相关
我的任务
分享using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace nn
{
class Program
{
/// <summary>
/// 定义4个运动方向
/// </summary>
public enum Direction
{
东,
南,
西,
北
}
/// <summary>
/// 向东走
/// </summary>
static void MoveEast(int x,int y,int[,] chessboard)
{
if (y + 1 <= chessboard.GetUpperBound(1))
{
if (chessboard[x, y + 1] != 1)
{ Move(Direction.东, x, y + 1, chessboard); }
else
{Move(Direction.南, x, y, chessboard);}
}
else
{
Move(Direction.南, x , y, chessboard);
}
}
/// <summary>
/// 向南走
/// </summary>
static void MoveSouth(int x,int y,int[,] chessboard)
{
if(x+1<=chessboard.GetUpperBound(0))
{
if (chessboard[x + 1, y] != 1)
{ Move(Direction.南, x + 1, y, chessboard);}
else
{ Move(Direction.西, x, y, chessboard);}
}
else
{
Move(Direction.西, x, y, chessboard);
}
}
/// <summary>
/// 向西走
/// </summary>
static void MoveWest(int x,int y,int[,] chessboard)
{
if (y > 0)
{
if (chessboard[x, y - 1] != 1)
{ Move(Direction.西, x, y - 1, chessboard); }
else
{ Move(Direction.北, x, y, chessboard); }
}
else
{ Move(Direction.北, x , y, chessboard); }
}
/// <summary>
/// 向北走
/// </summary>
static void MoveNorth(int x,int y,int[,] chessboard)
{
if (x > 0 )
{
if(chessboard[x-1, y] != 1)
Move(Direction.北, x-1, y, chessboard);
else
{ Move(Direction.东, x, y, chessboard); }
}
else
{ Move(Direction.东, x, y, chessboard); }
}
/// <summary>
/// 判断程序是否结束
/// </summary>
static bool IsEnd(int x, int y, int[,] chessboard)
{
if (x > 0 && x < chessboard.GetUpperBound(1) && y > 0 && y < chessboard.GetUpperBound(0))
{
if (chessboard[x, y] == 1 && chessboard[x + 1, y] == 1 && chessboard[x - 1, y] == 1 && chessboard[x, y + 1] == 1 && chessboard[x, y - 1] == 1)
return true;
else
return false;
}
else
{ return false; }
}
/// <summary>
/// 向下一格子运动
/// </summary>
static void Move(Direction direct,int x,int y,int[,] chessboard)
{
if (IsEnd(x, y, chessboard))
{
return;//程序满足结束条件,则结束
}
if (chessboard[x, y] != 1)
{
chessboard[x, y] = 1;//输出结果
Console.WriteLine(x + "," + y);//这里也可以把x,y值保存起来
}
switch(direct)
{
case Direction.东:
MoveEast(x,y,chessboard);
break;
case Direction.南:
MoveSouth(x,y,chessboard);
break;
case Direction.西:
MoveWest(x,y,chessboard);
break;
case Direction.北:
MoveNorth(x,y,chessboard);
break;
}
}
static void Main(string[] args)
{
int[,] chessboard =new int[4, 4]{{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}};//我们用棋盘数组表示4*4表格
//将初始值都设为0;表示为未被访问,1为访问过。
//从数组0,0进入,并且初始的方向是向东走
Move(Direction.东, 0, 0, chessboard);
Console.Read();
}
}
}
int n = 9; //大小
int s = 0;
int[,] jgg = new int[n,n];
for (int i = 0; i < n/2; i++)
{
for (int j = i; j < n-i; j++) //上面一排
{
jgg[i, j] = s++;
}
for (int j = 1+i; j < n-1-i; j++) //右面一排
{
jgg[j, n - 1 - i] = s++;
}
for (int j = n-1-i; j >=i; j--) //下面一排
{
jgg[n - 1 - i, j] = s++;
}
for (int j = n - 2-i; j >= 1+i; j--) //左面一排
{
jgg[j, i] = s++;
}
}
jgg[n / 2, n / 2] = s; //中心点赋值
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
Console.Write(jgg[i,j]+ " ");
}
Console.WriteLine();
}
Console.ReadKey();