#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's length and the array's max_number: \n");
int n,max;
scanf("%d,%d",&n,&max);
int a[n];
void creat_array(int a[],int len,int max){
//产生一个随机正负数组
for(int i=0;i<len;i++){
a[i]=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[n];
int s=0;
for(int i=0;i<n;i++){
sum[i]=0;
}
for(int i=0;i<n;i++){
s+=a[i];
sum[i]+=s;
}
printf("产生的数组和是:\n");
print_array(sum,n);
int min;
for(int i=0;i<n;i++){
if(a[i]>0){
//因为是求最下正数,必须要保证min>0,不然下面代码中的if判断会失效
min=a[i];
printf("min:%d \n",min);
break;
}
}
int thismin;
for(int j=0;j<n;j++){
thismin=sum[j];
for(int k=j;k<n-1;k++){
thismin=sum[k+1]-sum[j];
if(thismin>0&&thismin<min){
min=thismin;
printf("%d,%d,%d\n",sum[k],sum[j],min);
}
}
}
return min;
}
int key=min_sum_sqe(a,n);
printf("最小的正子序列和: %d\n",key);
printf("产生的随机数组:\n");
print_array(a,n);
}
void print_array(int a[],int n){
//打印随机数组 for(int i=0;i<n;i++){
((i+1)%10==0)?printf("%4d \n",a[i]):printf("%4d ,",a[i]);
}
}

这是 数据结构与算法分析——C语言描述中看第二章习题2.12 第二问的代码

发布到首页候选去是想各位园子里感兴趣的大神看看这个求最小正序列和的代码正确否。谢谢了

最小正子序列(序列之和最小,同时满足和值要最小)(数据结构与算法分析——C语言描述第二章习题2.12第二问)的更多相关文章

  1. 51nod-1065:最小正子段和(STL)

    N个整数组成的序列a11,a22,a33,…,ann,从中选出一个子序列(aii,ai+1i+1,…ajj),使这个子序列的和>0,并且这个和是所有和>0的子序列中最小的. 例如:4,-1 ...

  2. 51nod 1065:最小正子段和

    1065 最小正子段和 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  取消关注 N个整数组成的序列a[1],a[2],a[3],-,a[n],从中选出一 ...

  3. 51nod-1065 最小正子段和 【贪心 + 思维】

    N个整数组成的序列a[1],a[2],a[3],-,a[n],从中选出一个子序列(a[i],a[i+1],-a[j]),使这个子序列的和>0,并且这个和是所有和>0的子序列中最小的. 例如 ...

  4. [51nod1065]最小正子段和

    题意:求一个序列中大于0的最小子段和. 解题关键: 先求出前缀和和,对于每个位置求某个位置到当前位置和大于1的和的最小值.然而这是复杂度是O(n^2)的.其实可以通过排序优化到O(nlogn).对前缀 ...

  5. 51nod 1065 最小正子段和

    题目链接:51nod 1065 最小正子段和 房教说用前缀和做,然后看了别人博客懂了后就感觉,这个真有意思... #include<cstdio> #include<cstring& ...

  6. exgcd求解同余方程的最小正整数解 poj1061 poj2115

    这两题都是求解同余方程,并要求出最小正整数解的 对于给定的Ax=B(mod C) 要求x的最小正整数解 首先这个式子可转化为 Ax+Cy=B,那么先用exgcd求出Ax+Cy=gcd(A,C)的解x ...

  7. 通过交换a,b 中的元素,使[序列a 元素的和]与[序列b 元素的和]之间的差最小

    题目描述: 有两个序列a,b,大小都为n,序列元素的值任意整数,无序:要求:通过交换a,b 中的元素,使[序列a 元素的和]与[序列b 元素的和]之间的差最小.例如:var a=[100,99,98, ...

  8. AC日记——最小正子段和 51nod 1065

    最小正子段和 思路: 找最小的大于0的sum[j]-sum[i](j>i): 高级数据结构(splay)水过: 来,上代码: #include <cstdio> #include & ...

  9. ex_gcd求不定方程的最小正整数解

    #include<bits/stdc++.h> using namespace std; int gcd(int a,int b) {return b?gcd(b,a%b):a;} int ...

随机推荐

  1. vue学习二:

    vue的常用标签: 1.<router-link to=''>主要实现跳转链接功能,属性to='/'即是跳转到path为'/'的路径. 2.v-bind动态绑定指令,格式为:v-bind: ...

  2. STM32F030 定时器多次溢出才触发中断的问题

    前言 最近在调试项目过程中,用了 STM32F030 的定时器 16 作为系统时钟,1ms 触发一次中断,过程中遇到一些值得记录的问题. 记录 STM32F030 中定时器 16 的初始化配置如下 v ...

  3. POJ-1128-Frame Stacking

    链接:https://vjudge.net/problem/POJ-1128 题意: 每张图片上面画了一些边框,给出这些边框叠在一起后的图片,图片边框一定是由一个字母表示并且每条边至少三个字符,输入保 ...

  4. HDU 3709 Balanced Number 求区间内的满足是否平衡的数量 (数位dp)

    平衡数的定义是指,以某位作为支点,此位的左面(数字 * 距离)之和 与右边相等,距离是指某位到支点的距离; 题意:求区间内满足平衡数的数量 : 分析:很好这又是常见的数位dp , 不过不同的是我们这次 ...

  5. 5.SpringMVC

    1.SpringMVC概述 概述: SpringMVC是基于请求驱动,围绕一个核心Servlet 转发请求到对应的Controller而设计的优点:是一个典型的教科书式的MVC构架,易学易用提供了清晰 ...

  6. php连接数据库mysql数据库

    查找数据 $con = mysqli_connect('localhost', 'root', '', 'mydb'); if (!$con) { die('数据库连接失败' . mysqli_con ...

  7. 15-----BBS论坛

    BBS论坛(十五) 15.1.登录界面完成 (1)front/signbase.html {% from 'common/_macros.html' import static %} <!DOC ...

  8. 转 Alert.log shows No Standby Redo Logfiles Of Size 153600 Blocks Available

    http://blog.itpub.net/23135684/viewspace-703620/ Alert.log shows No Standby Redo Logfiles Of Size 15 ...

  9. CSS3 中 图标编码 icon——Font-Awesome

    在做网页开发中经常会用到图标,原来经常会到一些icon网站上找导入到项目中,现在Font-Awesome中的有很多的图标,并且还在不断更新 现在Font-Awesome最新版本是4.7,下载出来的Fo ...

  10. eclipse decompiler

    # eclipse -> help -> eclipse marketplace # decompiler