给定n个数(有正有负数),怎样求解最小的连续正子序列之和( 二 )
■网友
#include "stdio.h"#include "stdlib.h"#define random(x) (rand()%x)void creat_array(int a,int len,int max);void print_array(int a,int n);void main(){ printf("please input two numbers as the array\u0026#39;s length and the array\u0026#39;s max_number: \"); int n,max; scanf("%d,%d",\u0026amp;n,\u0026amp;max); int a; void creat_array(int a,int len,int max){ //产生一个随机正负数组 for(int i=0;i\u0026lt;len;i++){ a=random(max)-max/2; } } //int a={4,-1,5,-2,-1,2,6,-2}; //int a={4,-1,4}; creat_array(a,n,max); int min_sum_sqe(int a,int n){ //求出数组a的子序列的最小正子序列和 //任何一个子序列和都可表示成两个子序列之差ABCD序列,B序列可以表示成AB序列减去A序列。 int sum; int s=0; for(int i=0;i\u0026lt;n;i++){ sum=0; } for(int i=0;i\u0026lt;n;i++){ s+=a; sum+=s; } printf("产生的数组和是:\"); print_array(sum,n); int min; for(int i=0;i\u0026lt;n;i++){ if(a\u0026gt;0){ //因为是求最下正数,必须要保证min\u0026gt;0,不然下面代码中的if判断会失效 min=a; printf("min:%d \",min); break; } } int thismin; for(int j=0;j\u0026lt;n;j++){ thismin=sum; for(int k=j;k\u0026lt;n-1;k++){ thismin=sum-sum; if(thismin\u0026gt;0\u0026amp;\u0026amp;thismin\u0026lt;min){ min=thismin; printf("%d,%d,%d\",sum,sum,min); } } } return min; } int key=min_sum_sqe(a,n); printf("最小的正子序列和: %d\",key); printf("产生的随机数组:\"); print_array(a,n);} void print_array(int a,int n){ //打印随机数组 for(int i=0;i\u0026lt;n;i++){ ((i+1)%10==0)?printf("%4d \",a):printf("%4d ,",a); } }试了几组数据是对的,但是不敢肯定这个程序到底是不是正确的,由于不会平衡树,只能这样写了
■网友
请参考编程珠玑的相关章节,我记得有四种解法。
■网友
不太明白题目意思,最小的连续正子序列指子序列中所有元素必须都是正的,对吧?那n个元素中最小的那个正数不就是最小的连续正子序列吗?????我理解的有问题吗?
推荐阅读
- 戒烟|一天内抽多少支烟,是人体能承受的极限?医生给个数,要心里有底
- 哪个数据库,可以直接做数据透视图(navicat类的也可以)
- 汽车知识|月薪要多少才够养一辆十万的车?大约需要这个数
- 私家车|私家车一年最少跑多少才算合格?老司机:跑不到这个数把车卖了吧
- CPM 点击率(CTR)、损失率 和 LandingPage 的跳出率,这几个数值之间关系,一般网站这些数值取值区间是多少
- 求助。php无限极分类。递归。咋数出来。每一个分类下面的小分类个数啊。希望有个demo谢谢!
- 哪里能获取美股月度成交金额的数据,找了好几个数据库都只有成交量
- 买车|加200元的汽油能开多少公里?老司机:超过这个数,才是真的省油
- 拼多多 月GMV 400亿 这个数据可靠吗 如果可靠,那淘宝危险吗阿里会怎样对待这个电商新成员
- Python中怎样高效可持续地统计个数
