数组题目小计(2)

经过小逸的提醒,用了改为二维数组,还是有问题

#include<iostream>
using namespace std;
int Max(int b[][100], int i, int num, int hang);
int main()
{
    int sum=0;
    cout << "请输入数组元素个数:";
    int num;
    cin >> num;
    cout << "请输入数组元素:";
    int array_[100][100], i, j, far, k = 0;
    int a[100];
    for (i = 0; i < num; i++)
        cin >> array_[0][i];//第一行存储输入的数组
    int hang_max[100][100];//求每行的最大值
    for (i = 0; i < num; i++) //列数
    {
        //far为子数组元素个数 分别存入第far行
        for (far = 1; far < num - i; far++)
        {
            for (j = 0; j < num; j++)//行数 不超过输入数组长度
            {
                for (k = i; k < i + far; k++)
                {
                    sum += array_[0][k];//子数组元素求和
                }
                array_[far][i] = array_[far][i] + sum;//二维数组第一行为输入数组
            }
        }
    }
    for (i = 0; i < num; i++)
    {
        for (j = 0; j < num; j++)
        {
            hang_max[0][i] = Max(array_, i, num, far);
        }
    }
    cout << Max(hang_max, i, num, j)<<" ";
    return 0;
}
//求数组最大值
int Max(int b[][100], int i, int num,int hang)
{
    int M = b[0][0];//初始化二维数组
    for (i = 0; i < num; i++)
    {
        if (b[hang][i] > M)
            M = b[hang][i];
    }
    return M;
}
View Code

明天把大神说的动态规划算法搞懂,把这个二维数组这个尽量搞定,真想说:一个好的算法能解救程序猿于水火,编程中思考的过程真的很美妙

原文地址:https://www.cnblogs.com/brucekun/p/5313439.html