zoukankan      html  css  js  c++  java
  • 求一个有一千个元素的整数数组的最大子数组的和

    小组成员:司宇,滕达。

          

    设计过程:

        

    设计界面:

         在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)
            {
    
            }
        }
    }
  • 相关阅读:
    Element-UI的表格展开的属性 type=“expand” 没有数据的则不显示展开按钮,有数据才会显示
    elementui 的 el-dialog 里面获取不到dom元素问题,设置表单滚动条到顶部问题
    el-checkbox点击事件阻止冒泡
    axios的get方法传数组参数
    elementui 的 el-data-picker 时间回填无效
    vue获取数据后给data赋值,页面不刷新的问题
    vue 项目碰到的问题
    input框只能输入汉字、数字+字母的验证
    Vue Cli3 TypeScript 搭建工程
    Form表单的主要Content-Type
  • 原文地址:https://www.cnblogs.com/qiyuea/p/9783681.html
Copyright © 2011-2022 走看看