码迷,mamicode.com
首页 > 其他好文 > 详细

运算测试

时间:2015-04-01 21:49:32      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:

一、设计思想:

  首先要随机生成一定的随机数,然后通过对数组赋值,再求出子数组之和,比较哪个数组之和最大,如果为负值即取消赋值,在这个基础之上,重新算出最大子数组之和,最后输出最大和以及最大子数组。

二、源代码:

#include<iostream>
#include<ctime>
#include<stdlib.h>
using namespace std;

void main()
{

        int begin=0; //子序列的开头
        int end=0; //子序列的结尾
        int newsum=0; //当前子序列最大值
        srand((unsigned)time(NULL)); //生成随机数
        int a[10000], n;


        cout << "请输入数组里面包含数的个数:" << endl;
        cin >> n;
        for (int i = 0; i < n; i++)
        {
             a[i] = rand() % 100-50;
         } // 随机生成100以内的数组的值


       int maxsum=a[0];


       cout << "数组a[" << n << "]为:";
       for (int i = 0; i < n; i++)
       {
           cout << a[i] << " ";
       }
       cout << endl;

       for (int i = 0; i<n; i++)//开始循环求子序列和
      {
          newsum = newsum + a[i];
          if (newsum > maxsum)//更新当前子序列的和
          {
              maxsum = newsum;
              end = i;
          }
         if (newsum < 0)//假若当前子序列和为负,则舍弃
         {
             begin = i + 1;
             newsum = 0;

          }

      }

      cout << "最大的子序列和为:" << maxsum << endl;

      cout << "最大的序列为:";

      for (int k = begin; k <= end; k++)
      {
          cout << a[k] << " ";
       }
      cout << endl;

}

三、出现的问题:

这次的实验代码跟上次的一样,只是测试数据的时候出现了些许问题。

四、实验截图:

技术分享

技术分享

技术分享

五、实验总结:通过这次的跟同学合组完成的实验,也促使我完成了这一阶段,跟同学之间好好配合很重要,我跟刘伯建一块完成的这项实验同时也有一定的乐趣。下面是我跟他的合照

技术分享

 

运算测试

标签:

原文地址:http://www.cnblogs.com/itlangguojie/p/4385382.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!