📄 form1.cs
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace 扩展24点游戏动态规划求解
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
EquationGame eg;
/// <summary>
/// 将字符串拆分成整数数组
/// </summary>
int[] GetIntArray(string text)
{
text += '#';
List<int> list = new List<int>();
int state = 0;//0在数字之前,1在数字之中
int val = 0;
int sign = 1; foreach (char ch in text)
{
if (char.IsDigit(ch))
{
val = val * 10 + ch - '0';
state = 1;
}
else
{
if (state == 1)
{
list.Add(val * sign);
state = 0;
val = 0;
}
if (ch == '-')
sign = -1;
else
sign = 1;
if (ch == '.')
{
listBox搜索结果.Items.Add( "不支持小数");
return null;
}
}
}
int[] array = new int[list.Count];
list.Sort();
list.CopyTo(array);
return array;
}
private void button搜索一个解_Click(object sender, EventArgs e)
{
listBox搜索结果.Items.Clear();
int []array=GetIntArray(textBox整数数组.Text);
bool needNewEg = true;
if (eg != null)
{
if (eg.n == array.Length)
{
int i;
for (i = 0; i < eg.n; i++)
{
if (eg.array[i] != array[i])
break;
}
if (i == eg.n)
needNewEg = false;
}
}
if (needNewEg)
{
if (eg == null)
eg = new EquationGame(array);
else
eg.array = array;
}
DateTime startTime = DateTime.Now;
Expression exp = eg.GetOneExpression((int)numericUpDown希望值.Value);
textBox耗时.Text = (DateTime.Now - startTime).TotalSeconds.ToString();
if (exp ==null)
listBox搜索结果.Items.Add("无解");
else
listBox搜索结果.Items.Add(exp.ToString());
}
private void button关闭_Click(object sender, EventArgs e)
{
Close();
}
private void button搜索全部解_Click(object sender, EventArgs e)
{
int[] array = GetIntArray(textBox整数数组.Text);
bool needNewEg = true;
listBox搜索结果.Items.Clear();
if (eg != null)
{
if (eg.n == array.Length)
{
int i;
for (i = 0; i < eg.n; i++)
{
if (eg.array[i] != array[i])
break;
}
if (i == eg.n)
needNewEg = false;
}
}
if (needNewEg)
{
if (eg == null)
eg = new EquationGame(array);
else
eg.array = array;
}
DateTime startTime = DateTime.Now;
List<Expression> list = eg.GetAllExpresses((int)numericUpDown希望值.Value);
textBox耗时.Text = (DateTime.Now - startTime).TotalSeconds.ToString();
if (list.Count == 0)
listBox搜索结果.Items.Add("无解");
foreach (Expression item in list)
listBox搜索结果.Items.Add(item.ToString() );
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -