• 计算与软件工程作业三


    这个作业要求在哪里 https://edu.cnblogs.com/campus/jssf/infor_computation17-31/homework/10454
    我的课程目标 学习一些编程语言,并完成单元测试
    此作业在哪个具体方面帮我实现目标 代码的运行
    其他参考文献
    作业正文

    正文

    单元测试

    数组中最大子数组的和。

    用类/函数来实现
    需求:希望返回 3 种信息
    最大子数组的和
    最大子数组开始的下标
    最大子数组结束的下标
    从文本文件中读输入的数据,熟悉文件操作, 文件有两种数据
    第一个数字:这次测试中有多少个数据, 数字后面是冒号。
    后续数字: 每个数据的值,用逗号隔开
    比如
    文件内容:
    17: -32, -10, 33, -23, 32, -12, 41, -12, 1, 3, 5, -98, 70, -21, 10, -9, 61
    输出
    sum = 71

    #include<stdio.h>
    #include<stdlib.h>  
    int *FindMaxCrossSubarray(int A[],int low,int mid,int high)  
    {  
        int lsum = -99999;  
        int rsum = -99999;  
        int sum = 0;  
        int i;  
        int *res;  
        res = (int *)malloc(sizeof(int)*3);  
        for(i = mid;i >= low ;i--)  
        {  
            sum += A[i];  
            if (sum > lsum)  
            {  
                lsum = sum;  
                res[0] = i;  
            }  
        }  
        sum = 0;  
        for(i = mid+1;i<=high;i++)  
        {  
            sum += A[i];  
            if(sum > rsum)  
            {  
                rsum = sum;  
                res[1] = i;  
            }  
        }  
        res[2] = (lsum+rsum);  
        return res;  
    }  
                  
    int *FindMaximumSubarray(int A[],int low,int high)  
    {  
        int *res;  
        int mid;  
        int *resL,*resR,*resC;  
        res = (int *)malloc(sizeof(int)*3);  
        resL = (int *)malloc(sizeof(int)*3);  
        resR = (int *)malloc(sizeof(int)*3);  
        resC = (int *)malloc(sizeof(int)*3);  
        if(high == low)  
        {  
            res[0] = low;  
            res[1] = high;  
            res[2] = A[low];  
            return res;  
        }  
        else  
        {  
            mid = (int)((low+high)/2);  
            resL = FindMaximumSubarray(A,low,mid);  
            resR = FindMaximumSubarray(A,mid+1,high);  
            resC = FindMaxCrossSubarray(A,low,mid,high);  
              
            if(resL[2] >= resR[2]  && resL[2] >= resC[2])  
                return resL;  
            else if(resR[2] >= resL[2] && resR[2] >= resC[2])  
                return resR;  
            else  
                return resC;  
        }  
    }  
          
    int main()  
    {  
        int i;  
        int *result;  
        int A[]={13,-3,-25,20,-3,-16,-23,18,20,-7,12,-5,-22,15,-4,7};  
        result = FindMaximumSubarray(A,0,15);  
        for(i=0;i<3;i++)  
        {  
            printf("%d ",result[i]);  
        }  
        printf("
    ");  
        return 0;  
    }
    
  • 相关阅读:
    [Windows Server 2012] 安装PHP+MySQL方法
    [Windows Server 2012] 安装IIS8.5及FTP
    [Windows Server 2012] IIS自带FTP配置方法
    护卫神,服务器安全专家!
    ie9 UpdateModel失败
    打包自己的nuget时,设置安装此nuget改写web.config
    Roslyn 1.2.0.0 的改变
    用自定义routes把不同的querystring名对应到action同一个参数上
    JetBrains dotCover 2.0 破解研究(注册机)
    mvc4 中的 AuthorizeAttribute
  • 原文地址:https://www.cnblogs.com/chengang17074213/p/12455055.html
Copyright © 2020-2023  润新知