博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1000个数,求相邻数之和的最大值(结对完成作业)
阅读量:5140 次
发布时间:2019-06-13

本文共 3250 字,大约阅读时间需要 10 分钟。

设计思想
  1 .输入整型数组(1000个元素)
  2.动态规划实现最大子数组之和
  3.加入int32类型的数值溢出判断
  4.输出最大子数组之和和其位置。
 一.对于一个元素个数较小的int数组,没有int32数组溢出判断
1 #include
2 using namespace std; 3 int main() 4 { 5 int n,star=0,end=0; 6 //实现整型数组的输入 7 cout<<"输入整型数组的长度"; 8 cin>>n; 9 int *p=new int[n];10 cout<<"输入一个整型数组";11 for(int i=0;i
>p[i];14 }15 int sum=p[0];16 int max_sum=p[0];17 //copy的csdn上大神的代码。注释为自己理解18 for(int i=1;i
0) //从第二个数开始判断是否为正数21 { 22 sum=sum+p[i]; //是正数,将和值(初始值为p【0】)和第i+1个数做和。23 if(sum>max_sum) // 并判断是否为最大,是让其赋值给max_sum,并将子数组末位置改变。24 { 25 max_sum=sum;26 end=i;27 }28 }29 else 30 { 31 sum=p[i]; //是负数,将第i+1个数的值赋值给和值sum32 if(sum>max_sum)//并判断是否为最大,是让其赋值给max_sum,并将子数组初、末位置改变。33 { 34 max_sum=sum;35 star=i;36 end=i;37 }38 }39 }40 cout<<"最大子数组位置为第"<
<<"个到第"<
<<"个"<

二.一个1000元素个数的数组(为了测试输入便利,利用随机数及随机数种子实现1000个元素),加入int32类型判断溢出

1 #include
2 #include
3 #include
4 using namespace std; 5 int main() 6 { 7 int n=1000,star=0,end=0; 8 //利用随机数实现1000个元素,用随机数只是便于输入1000个元素的数组。 9 int *p=new int[n];10 srand((unsigned)time(NULL));11 for(int i=0;i
0) //从第二个数开始判断是否为正数30 { 31 if(p[i]>(INT_MAX-sum)) //加入了一段判断int类型数据是否溢出。32 {33 cout<<"int类型溢出"<
max_sum) // 并判断是否为最大,是让其赋值给max_sum,并将子数组末位置改变。38 { 39 max_sum=sum;40 end=i;41 }42 }43 else 44 { 45 sum=p[i]; //是负数,将第i+1个数的值赋值给和值sum46 if(sum>max_sum)//并判断是否为最大,是让其赋值给max_sum,并将子数组初、末位置改变。47 { 48 max_sum=sum;49 star=i;50 end=i;51 }52 }53 }54 cout<<"最大子数组位置为第"<
<<"个到第"<
<<"个"<

三.为了测试出int32类型溢出,将随机数扩大10^6倍

1 #include
2 #include
3 #include
4 using namespace std; 5 int main() 6 { 7 int n=1000,star=0,end=0; 8 //利用随机数实现1000个元素,用随机数只是便于输入1000个元素的数组。 9 int *p=new int[n];10 srand((unsigned)time(NULL));11 for(int i=0;i
0) //从第二个数开始判断是否为正数31 { 32 if(p[i]>(INT_MAX-sum)) //加入了一段判断int类型数据是否溢出。33 {34 cout<<"int类型溢出"<
max_sum) // 并判断是否为最大,是让其赋值给max_sum,并将子数组末位置改变。39 { 40 max_sum=sum;41 end=i;42 }43 }44 else 45 { 46 sum=p[i]; //是负数,将第i+1个数的值赋值给和值sum47 if(sum>max_sum)//并判断是否为最大,是让其赋值给max_sum,并将子数组初、末位置改变。48 { 49 max_sum=sum;50 star=i;51 end=i;52 }53 }54 }55 cout<<"最大子数组位置为第"<
<<"个到第"<
<<"个"<
 

总结      

   对于解决最大子数组之和的问题有一定的算法,但实际实现成代码形式有很大困难,最后借鉴网上大神的代码并理解才能实现。估计2个半小时,实际用时近3个小时。团队合作帮助很大

 

 

转载于:https://www.cnblogs.com/zhou2420032204/p/9774520.html

你可能感兴趣的文章
[改善Java代码]asList方法产生的List对象不可更改
查看>>
ACM题目————Find them, Catch them
查看>>
LeetCode Weekly Contest 119
查看>>
Angular2-之开发环境搭建/调试环境配置
查看>>
DDA, Bresenham line's algorithm and Voxel Traversal used in the Grid-Accelerator in PBRT
查看>>
执行p4 submit后,perl文件丢了可执行属性
查看>>
数字电路中表示频率误差的ppm是什么意思?
查看>>
upf学习
查看>>
第五篇:CUDA 并行程序中的同步
查看>>
获取当前焦点所在元素
查看>>
11.8输入一个整数,求它是几位数
查看>>
你不知道的parseInt
查看>>
python基础之python基本数据类型
查看>>
vue中-webkit-box-orient:vertical打包放到线上不显示
查看>>
[Swift通天遁地]一、超级工具-(20)图片面部聚焦:使图像视图自动聚焦图片人物的面部位置...
查看>>
解决SVN提交和更新代码冲突?
查看>>
rem布局注意问题和meta标签
查看>>
[Ramda] Pick and Omit Properties from Objects Using Ramda
查看>>
[React Testing] Children with Shallow Rendering
查看>>
ubuntu的LAMP环境搭建
查看>>