• 返回整数数组中最大子数组的值(数组首尾相连)


    应王老师要求,返回子数组的作业又来啦!这次的数组是首尾相连的

    预计时间:两小时

    实际时间:周四上课15分钟+周日13:20-14:30

    先说一下我的想法,之前的作业都是可以直接遍历整个数组,因为数组的长度是一定的,循环结束后就可以获得到所有子数组。但是这次作业的前提是数组首尾相连,遍历整个数组是无法结束的。所以我可以先想象环状的数组断开,利用二维数组把断开数组的每个数被包含的子数组再次存放,再去遍历求子数组的和,那么接下来的程序就和之前的一样了。

    程序:

    #include<iostream>
    #define n 100
    using namespace std;
    void main()
    {
        int a[n], b[n][n];
        int length, i, j, w = 0, p = 0, q = 0, temp, m;
        cout << "请输入数组的值" << endl;
        for (length = 0;;)
        {
            cin >> a[length];
            length++;
            if (getchar() == ' ')
            {
                break;
            }
        }
        cout << "这个数组的长度为:" << length << endl;
        for (i = 0; i<length; i++)
        {
            m = i;
            w = 0;
            j = 0;
            while (j <= length - 1)
            {
                w += a[m];
                b[i][j] = w;
                m++;
                if (m>length - 1)
                {
                    m = 0;
                }
                j++;
            }
        }
     
        temp = b[0][0];
        for (i = 0; i<length; i++)
        {
            for (j = 0; j<length; j++)
            {
                if (b[i][j]>temp)
                {
                    temp = b[i][j];
                    p = i;
                    q = j;
                }
            }
        }
     
        cout << "最大子数组的值为:" << temp << endl;

        cout << endl;
    }
  • 相关阅读:
    最长公共子序列
    学习MySQL常用操作命令
    using的几种用法
    C++循环的简单使用【闲来写来练练手~】
    使用【数据库收缩功能】实现多个数据文件的合并
    Google的十个核心技术(摘自CSDN)
    OPENGL入门学习
    dive into python 第 5 章 对象和面向对象
    [转]已知两圆圆心坐标及半径求两圆交点 (C语言|参数方程求解)
    The Python Tutorial 4. More Control Flow Tools的一些小记
  • 原文地址:https://www.cnblogs.com/miniarcher/p/9904152.html
Copyright © 2020-2023  润新知