zoukankan      html  css  js  c++  java
  • 求整数组环中最大子数组的和(升级版)

    题目:返回一个整数数组中最大子数组的和

    额外要求:让数组手尾相连,构成一个环,允许a[n],a[0]...这种形式。同时返回最大子数组的位置

    设计思想:将环断开,成为一条线,分析这条线上的最大子数组,找到最大子数组,便可以找到最大子数组的起点和终点,然后将终点看作起点,将起点看作终点,将线连成环,在进行寻找最大子数组(寻找时不算上起点和终点),最后将先后找到的两个最大子数组连在一起就形成了这个整数组环的最大子数组,然后将记录的起点和终点输出出来,返回最大子数组的位置。

    出现的问题:无法输入更多的数,例如1000个

    可能的解决方案:定义更大范围的整形数组,但我用了 long,long long ,usinged long,usinged long long都不行

    代码:

    //吕广浩 3/27
    #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;
    	i = 0;
    	while (i <= q)
    	{
    		cout << p << "  ";
    		p++;
    		if (p >= length)
    		{
    			p = 0;
    		}
    		i++;
    	}
    
    	cout << endl;
    }
    

      结果截图:

    开发流程:

    日期和任务 听课 看书 网上查资料 编程 日总计
    周一 2   0 1 3
    周二         0
    周三   2   1 3
    周四 2   2   4
    周五   1 1 1 3
    周六     3 3 6
    周日          
    总计 4 3 6 6 19

    总结:这次程序思想很重要,由环到线,由平常到特殊,要考虑的情况也要全面。

    缺陷记录日志:未考虑数值超出范围是的情况

  • 相关阅读:
    python格式化输出之format用法
    Mybatis插入数据返回主键
    DBC 和 Mybatis连接mysql数据库的时候,设置字符集编码
    工具列表
    Idea的Git如何回退到上一个版本
    mybatis-plus id主键生成的坑
    JAVA 线上故障排查完整套路,从 CPU、磁盘、内存、网络、GC 一条龙!
    DDD-快速hold住业务的利器
    深入理解ThreadLocal的原理和内存泄漏问题
    VUE开发--环境配置
  • 原文地址:https://www.cnblogs.com/lvstudy/p/5324948.html
Copyright © 2011-2022 走看看