zoukankan      html  css  js  c++  java
  • 数组结对

    1.设计思想:测试数组长度的最大范围,测试每个元素是int32 类型的,将数组的长度设为2,第一个数字输入最大位数的数字,查看结果。

    2.出现的问题:

    测试1000个元素,

    测试1000个元素程序没有问题,但是当测试1000000个元素时,程序运行时间过长,时间复杂度过大。

    当子数组的和超过最大范围时,结果为0。

     3.解决方案:1.如果用户输入超过最大范围,提示用户重新输入或者计算机抛出异常。

                      2.将数组定义为长整型的。

                      3.将结果存入数组。

    4.源代码 

    //郭婷 信1305 20132916 2015/3/20
    #include<iostream>
    #include<time.h>
    using namespace std;
    #define max(a,b) ((a)>(b)?(a):(b))
    int maxsum(int a[], int n)
    {
        int i;
        int maxsofar = 0;  //maxsofar记录到目前为止的的最大值
        int maxendinghere = 0; //maxendinghere记录从当前位置开始往前几个连续的数的和的最大值
        for (i = 0; i < n; i++)
        {
            maxendinghere = max(maxendinghere + a[i], 0);
            maxsofar = max(maxsofar, maxendinghere);
        }
        return maxsofar;
    }
    int main()
    {
        int n, i;
        cout << "输入数组的个数:";
        cin >> n;
        int *a;
        a = new int[n];
        if (a == NULL )
        {
            cout << "Error: memory could not be allocated";
            return 1;
        }
        //srand((unsigned)time(NULL));
        for (i = 0; i < n; i++)
            cin >> a[i];
        /*for (i = 0; i < n; i++)
        {
            a[i] = rand() % 200 - 100;
            cout << a[i] << " " ;
        }*/
        cout << endl;
        int max=maxsum(a, n);
        cout << "最大子数组的和为:" << max << endl;
        delete[]a;
        return 0;
    }

    5.总结

    原来写完一个程序,总觉得运行成功之后就不会有什么错误,也没有更广、更深的思考,通过这节课的学习,我知道了原来每个程序都有自己所不能涉及的范围,超过了既定的范围就会出现错误,而这些错误往往被我们忽略。所以以后写程序一定要考虑各种情况,可能出现的各种问题以及解决的问题。

    结对伙伴:

    郭婷 朱慧敏

  • 相关阅读:
    JAVA 设计模式 组合模式
    JAVA 设计模式 模板方法模式
    SpringBoot 数据篇之使用JDBC
    [Spring]01_环境配置
    [spring]03_装配Bean
    [Spring]04_最小化Spring XML配置
    [Quartz笔记]玩转定时调度
    [Spring]支持注解的Spring调度器
    asp.net core 系列 13 日志
    asp.net core 系列 12 选项 TOptions
  • 原文地址:https://www.cnblogs.com/gting/p/4374908.html
Copyright © 2011-2022 走看看