博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
求一个有一千个元素的整数数组的最大子数组的和
阅读量:5149 次
发布时间:2019-06-13

本文共 1941 字,大约阅读时间需要 6 分钟。

 

求一个有一千个元素的整数数组的最大子数组的和

小组成员:司宇,滕达

设计过程:

设计界面:

 在c#界面添加一些控件。

程序设计:

1.使用for循环和取随机数的函数产生一千个随机数并且将其赋值到数组中。

2.封装获取最大子数组和的子函数;

3.设计主函数调用封装好的子函数;

4.将最大子数组和在textbox中显示出来;

调试和运行程序:

遇到的问题:

1.没办法随意设定随机数的范围。

2.主函数需要的数值类型和子函数定义的数值类型不一致

3.调试的时候进行一次调试以后就无法进行第二次调试。解决方案:

1.给随机数的上下限分别用两个可变量来定义,并且通过外界TextBox来进行输入;

2.主函数中的数组定义的是double类型,子函数定义的是int类型,在调用子函数之前将数组的类型转化为int类型;

 3.设计一个清屏键,每次调试完以后,使用这个键清除文本,方便进行第二次调试。

几次运行的结果:

源程序:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

 

namespace _1000个数字的整数组的最大子数数组和

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

 

        //求一个整数数组任意的连续子数组的最大和

        public int Sum(int[] a)

        {

            if (null == a)

            {

                return 0;            

            }                                                   //判断数组是否为空,如果是空的话,令返回值为0

            if (a.Length == 1)

            {

                return a[0];

            }                                                  //判断数组里面是否只有一个元素,是,则返回此元素

            int sum = a[0];

            int temp;

            for (int i = 0; i < a.Length - 1; i++)

            {

                temp = a[i];                                    //开始从a[i]往它之后遍历,从a[i]开始累加,逐一跟sum对比

                for (int j = i + 1; j < a.Length; j++)             

                {

                    temp = temp + a[j];

                    if (sum < temp)

                    {

                        sum = temp;                             //得出最大的一个Sum值,并且返回Sum

                    }

                }

            }

            return sum;

        }

    

 

        private void button1_Click(object sender, EventArgs e)

        {

            Random random = new Random();

            double min, max;

            min = Convert.ToDouble (textBox2.Text);

            max = Convert.ToDouble (textBox3.Text);

            int[] a = new int[1000];

            for (int i = 0; i < 1000; i++)

            {

                a[i] = random.Next((int)min, (int)max);

                richTextBox1.AppendText(Convert.ToString(a[i])+"      ");

            }

             int sum=Sum (a);                                                 //调用定义的封装好的子程序求和

             textBox1.Text = Convert.ToString(sum);

        }

 

        private void textBox3_TextChanged(object sender, EventArgs e)

        {

 

        }

 

        private void textBox2_TextChanged(object sender, EventArgs e)

        {

 

        }

 

        private void button2_Click(object sender, EventArgs e)

        {

            richTextBox1.Text="";

            textBox1.Text = "";

        }

 

        private void button3_Click(object sender, EventArgs e)

        {

        }

 

        private void textBox1_TextChanged(object sender, EventArgs e)

        {

 

        }

    }

}

 

转载于:https://www.cnblogs.com/tengda123/p/9786868.html

你可能感兴趣的文章
VALSE2019总结(6)-年度总结-Re-ID
查看>>
luogu_1414 又是毕业季II
查看>>
List
查看>>
图Graph
查看>>
linux文件截取前几行,后几行,中间几行命令
查看>>
iOS 10中如何搭建一个语音转文字框架
查看>>
百度智能手环方案开源(含源码,原理图,APP,通信协议等)
查看>>
设计模式(三十一)------23种设计模式(23):简单工厂模式
查看>>
9.12日学习笔记
查看>>
spring-data-neo4j 4.2.4release文档概要
查看>>
0049-学校的上网费
查看>>
31、求整数范围中1的个数
查看>>
算法第二章上机实践报告
查看>>
.net
查看>>
Zend studio 常用快捷键与技巧
查看>>
iOS基础知识之类别
查看>>
测试人员关注点
查看>>
spring mvc 自定义转换器
查看>>
解决 IE8 不支持console
查看>>
求和最大的子数组
查看>>