📄 form1.cs
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.IO;
namespace maxy
{
public partial class Form1 : Form
{
int x = 0;
int y = 0;
int m =5;
int n =5;
int style = 1;
int size = 50;
int[,] S;
Stack<PIX> mystack;
PIX[] path;
bool huitu = false;
public Form1()
{
InitializeComponent();
S = new int[m, n];
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
S[i, j] = -1;
}
}
}
private void buttonf_Click(object sender, EventArgs e)
{
try
{
int temp1 = int.Parse(textBox3.Text.Trim());
int temp2 = int.Parse(textBox4.Text.Trim());
m = temp1;
n = temp2;
S = new int[m, n];
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
S[i, j] = -1;
}
}
}
catch
{
MessageBox.Show("输入不合法!棋盘规模仍是5*5");
}
listBox1.Items.Clear();
huitu = false;
mystack = new Stack<PIX>();
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
S[i, j] = -1;
}
}
x = int.Parse(textBox1.Text.Trim());
y = int.Parse(textBox2.Text.Trim());
PIX pix = new PIX();
pix.x = x;
pix.y = y;
mystack.Push(pix);
tryget(x, y);
if (!testS())
{
MessageBox.Show("没有解!");
path = mystack.ToArray();
for (int i = path.Length - 1; i >= 0; i--)
{
listBox1.Items.Add(i.ToString()+": (" + path[i].x.ToString() + "," + path[i].y.ToString() + ")");
}
}
}
private bool tryget(int x, int y)
{
S[x, y] = 1;
if (testS())
{
path = mystack.ToArray();
int pace = 1;
for (int i = path.Length-1; i >=0 ; i--)
{
listBox1.Items.Add("第 "+pace. ToString()+" 个位置: ("+path[i].x.ToString() + "," + path[i].y.ToString() + ")");
pace++;
}
this.button1.Enabled = true;
return true;
}
bool tag = false;
//---------------------------------------------------------------------选择优先执行的一段
if (x >= 2 && y < n - 1&&style==1)//-------------------1
{
if (S[x - 2, y + 1] < 0)
{
S[x - 2, y + 1] = 1;
PIX pix = new PIX();
pix.x = x - 2;
pix.y = y + 1;
mystack.Push(pix);
tag = tryget(x - 2, y + 1);
}
}
if (x > 0 && y < n - 2&&style==2)//--------------------2
{
if (S[x - 1, y + 2] < 0)
{
S[x - 1, y + 2] = 1;
PIX pix = new PIX();
pix.x = x - 1;
pix.y = y + 2;
mystack.Push(pix);
tag = tryget(x - 1, y + 2);
}
}
if (x < m - 1 && y < n - 2&&style==3)//---------------3
{
if (S[x + 1, y + 2] < 0)
{
S[x + 1, y + 2] = 1;
PIX pix = new PIX();
pix.x = x + 1;
pix.y = y + 2;
mystack.Push(pix);
tag = tryget(x + 1, y + 2);
}
}
if (x < m - 2 && y < n - 1&&style==4)//---------------4
{
if (S[x + 2, y + 1] < 0)
{
S[x + 2, y + 1] = 1;
PIX pix = new PIX();
pix.x = x + 2;
pix.y = y + 1;
mystack.Push(pix);
tag = tryget(x + 2, y + 1);
}
}
if (x < m - 2 && y >= 1&&style==5)//-------------------5
{
if (S[x + 2, y - 1] < 0)
{
S[x + 2, y - 1] = 1;
PIX pix = new PIX();
pix.x = x + 2;
pix.y = y - 1;
mystack.Push(pix);
tag = tryget(x + 2, y - 1);
}
}
if (x < m - 1 && y >= 2&&style==6)//------------------6
{
if (S[x + 1, y - 2] < 0)
{
S[x + 1, y - 2] = 1;
PIX pix = new PIX();
pix.x = x + 1;
pix.y = y - 2;
mystack.Push(pix);
tag = tryget(x + 1, y - 2);
}
}
if (x > 0 && y >= 2&&style==7)//----------------------7
{
if (S[x - 1, y - 2] < 0)
{
S[x - 1, y - 2] = 1;
PIX pix = new PIX();
pix.x = x - 1;
pix.y = y - 2;
mystack.Push(pix);
tag = tryget(x - 1, y - 2);
}
}
if (x >= 2 && y >= 1&&style==8)//---------------------8
{
if (S[x - 2, y - 1] < 0)
{
S[x - 2, y - 1] = 1;
PIX pix = new PIX();
pix.x = x - 2;
pix.y = y - 1;
mystack.Push(pix);
tag = tryget(x - 2, y - 1);
}
}
//------------------------------------------------------------------------|选择优先执行的一段|
if (x >= 2 && y < n - 1&&style!=1)//-------------------1
{
if (S[x - 2, y + 1] < 0)
{
S[x - 2, y + 1] = 1;
PIX pix=new PIX();
pix.x=x-2;
pix.y=y+1;
mystack.Push(pix);
tag =tryget(x - 2, y + 1);
}
}
if (x > 0 && y < n - 2&&style!=2)//--------------------2
{
if (S[x - 1, y + 2] < 0)
{
S[x - 1, y + 2] = 1;
PIX pix = new PIX();
pix.x = x - 1;
pix.y = y + 2;
mystack.Push(pix);
tag =tryget(x - 1, y + 2);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -