加强版:返回一个整数组中最大子数组的和

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 最大数组和
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void textBox3_TextChanged(object sender, EventArgs e)
        {

        }

        private void label1_Click(object sender, EventArgs e)
        {

        }
       
        private void button1_Click(object sender, EventArgs e)//取随机数时计算
        {
            int maxsum;
            double size = Convert.ToDouble(textBox4.Text);
            double range1 = Convert.ToDouble(textBox3.Text);
            double range2 = Convert.ToDouble(textBox5.Text);
            int[] list = new int[(int)size];
            Random r = new Random();
            for (int i = 0; i < size; i++)
            {
               double temp = r.Next((int)range1, (int)range2);
               list[i] = (int)temp;
               textBox1.AppendText(list[i].ToString() + " , ");
            }
            maxsum = MaxListSum(list);
            textBox6.Text = maxsum.ToString();
        }
        public int MaxListSum(int[] a)//获取最大子数组和
        {
            if (null == a)
            {
                return 0;
            }
            if (a.Length == 1)
            {
                return a[0];
            }
            int sum = a[0];
            int temp = a[0];
            for (int i = 1; i < a.Length; i++)
            {
                temp = max(temp + a[i], a[i]);
                if (sum < temp)
                {
                    sum = temp;
                }
            }
            return sum;
        }

        public int max(int a, int b)
        {
            return a > b ? a : b;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            textBox1.Text = null;
            textBox6.Text = null;
        }

        private void button4_Click(object sender, EventArgs e)//输入已知数组时计算
        {
            int maxsum;
            string[] strN = textBox1.Text.Split(',');
            int[] list = new int[strN.Length];
            for (int i = 0; i < strN.Length; i++)
            {
                list[i] = int.Parse(strN[i]);
            }
            maxsum = MaxListSum(list);
            textBox6.Text = maxsum.ToString();
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }

        private void textBox6_TextChanged(object sender, EventArgs e)
        {

        }

    }
}
复制代码

结果截图

posted @ 2018-10-13 15:41  言宇  阅读(112)  评论(0)    收藏  举报