⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form1.cs

📁 一、前言 24点游戏是一个常见游戏
💻 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 + -