和为s的连续正数序列

| 收藏本文 下载本文 作者:崆峒大师咸元进

下面小编给大家整理了和为s的连续正数序列(共含9篇),供大家阅读参考。同时,但愿您也能像本文投稿人“崆峒大师咸元进”一样,积极向本站投稿分享好文章。

和为s的连续正数序列

篇1:和为s的连续正数序列

/****************************************************************

输入一个正数s,打印出所有和为s的连续正数序列(至少含有两个数),

例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以结果打印出3个连续序列

1~5,4~6和7~8。

****************************************************************/

/*

解题思路:以和为9为例

过程:

12

123

1234

234    符合

2345

345

45     符合

4<(9+1)/2   结束查找

*/

#include

void printContinueSequence(int small,int big);

void findContinueSequence(int sum)

{

if(sum<3)

return;

int small = 1;

int big = 2;

int middle = (sum+1)/2;

int curSum = small + big;

while(small < middle)

{

if(curSum == sum)

{

printContinueSequence(small,big);

++big;

curSum += big;

}

else if(curSum < sum)

{

++big;

curSum += big;

}

else

{

curSum -= small;

++small;

}

}

}

void printContinueSequence(int small,int big)

{

for(int i=small; i<=big; ++i)

{

printf(“%d\t”,i);

}

printf(“\n”);

}

int main

{

findContinueSequence(9);

return 0;

}

篇2:最大连续子序列乘积

求最大连续子序列乘积与最大连续子序列和问题有所不同,因为其中有正有负还有可能有0。

假设数组为a[],直接利用动归来求解,考虑到可能存在负数的情况,我们用Max[i]来表示以a[i]结尾的最大连续子序列的乘积值,用Min[i]表示以a[i]结尾的最小的连续子序列的乘积值,那么状态转移方程为:

Max[i]=max{a[i], Max[i-1]*a[i], Min[i-1]*a[i]}; Min[i]=min{a[i], Max[i-1]*a[i], Min[i-1]*a[i]};初始状态为Max[0]=Min[0]=a[0]。代码如下:

int max_multiple(int *a,int n){ int *Min = new int[n](); int *Max = new int[n](); Min[0]= Max[0] = a[0]; int max = Max[0]; for(int i=1; i

如果不用数组,也可以采用临时变量保存上一次的最大值和最小值,代码如下:

int max_multiple_2(int *a,int n){ int minsofar, maxsofar, max; max = minsofar = maxsofar = a[0]; for(int i=1;i

补一个求三个数最大值的函数max3代码:

int max3(int a, int b, int c) {if (a>=b && a>=c) return a;return max3(b, c, a); }

篇3:最大连续子序列和多解――HDU 1003

Max Sum

Time Limit: /1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 161486 Accepted Submission(s): 37830

Problem Description Given a sequence a[1],a[2],a[3]......a[n], your job is to calculate the max sum of a sub-sequence. For example, given (6,-1,5,4,-7), the max sum in this sequence is 6 + (-1) + 5 + 4 = 14.

Input The first line of the input contains an integer T(1<=T<=20) which means the number of test cases. Then T lines follow, each line starts with a number N(1<=N<=100000), then N integers followed(all the integers are between -1000 and 1000).

Output For each test case, you should output two lines. The first line is Case #:, # means the number of the test case. The second line contains three integers, the Max Sum in the sequence, the start position of the sub-sequence, the end position of the sub-sequence. If there are more than one result, output the first one. Output a blank line between two cases.

Sample Input

25 6 -1 5 4 -77 0 6 -1 1 -6 7 -5

Sample Output

Case 1:14 1 4Case 2:7 1 6

题意:T组数,每组一个数n,之后n个数,求n个数的最大连续子序列和与起始位置跟终点位置,如果有多个解,输出起点最小的,如有多个终点,输出终点最小的。

方法一:直接枚举。O(n^3),超时

#include#include#include#define N 100010int a[N];int main{ //freopen(in.txt, r, stdin); int T, n, w = 0; int i, j, k; scanf(%d, &T); while(T--) { scanf(%d, &n); for(i=0; imax_s){ max_s = sum; left = i; right = j; } } } printf(Case %d:%d %d %d, ++w, max_s, left + 1, right + 1); if(T) printf(); } return 0;}

方法二:对前i项和进行预处理,O(n^2),超时。

#include#include#include#define N 100010int a[N];int sum[N];int main(){ //freopen(in.txt, r, stdin); int T, n, w = 0; int i, j, k; scanf(%d, &T); while(T--) { memset(sum, 0, sizeof(sum)); scanf(%d, &n); for(i=1; i<=n; i++){ scanf(%d, &a[i]); sum[i] = sum[i-1] + a[i]; } int max_s = -(1<<30); int s, left, right; for(i=1; i<=n; i++){ for(j=i; j<=n; j++){ s = sum[j] - sum[i-1]; if(s >max_s){ max_s = s; left = i; right = j; } } } printf(Case %d:%d %d %d, ++w, max_s, left, right); if(T) printf(); } return 0;}

方法三:分治,O(nlg(n)),可AC。

#include#include#include#define N 100010int a[N];typedef struct NODE{ int val, l, r;}Node;Node Max_Ans(int *A, int l, int r){ Node t; if(1 == r - l){ t.val = A[l]; t.l = l; t.r = l; return t; } Node t1, t2, t3; int mid = l + (r - l) / 2; t1 = Max_Ans(A, l, mid); t2 = Max_Ans(A, mid, r); if(t1.val >= t2.val) t = t1; else t = t2; int i, v, L, R; v = 0; L = A[mid -1]; t3.l = mid - 1; for(i=mid-1; i>=l; i--){ v += A[i]; if(v >= L){ L = v; t3.l = i; } } v = 0; R = A[mid]; t3.r = mid; for(i=mid; iR){ R = v; t3.r = i; } } t3.val = L + R; if(t3.val >= t.val) t = t3; return t;}int main(){ //freopen(in.txt, r, stdin); int T, w = 0; int n; Node max_s; int i, k; scanf(%d, &T); while(T--) { scanf(%d, &n); for(i=0; i方法四:线段树,可AC。

“ gtincludeltstdio.hgtincludeltstdlib.hgtincludeltstring.hgtdefine=”>#include#include#include#define“ i=”i,“ ifl=”=“ ifleft=”=“ ifmsumroot=”if(msum[root]“ ifr=”if(r“ ifres1.msum=”if(res1.msum“ ifsl=”if(sl“ ifsr=”if(sr“ ift=”if(T)“ inf=”1<<30;“ int=”int“ j=”j,“ k=”k;“ l=”l,“ left=”left“ ll=”ll,“ llmaxnltlt2=”ll[MAXN<<2];“ llroot=”ll[lroot];“ long=”long“ lr=”lr,“ lrmaxnltlt2=”lr[MAXN<<2];“ lroot=”root<<1;“ lrroot=”lr[lroot];“ lsum=”lsum,“ lsummaxnltlt2=”lsum[MAXN<<2];“ lsumroot=”lsum[root]){“ lsumrroot=”lsum[rroot]){“ lt=”<“ main=”main(){“ markl=”0,“ markr=”0;“ max_s=”query(1,“ max_s.ml=”max_s.ml,“ max_s.mr=”max_s.mr);“ max_s.msum=”max_s.msum,“ maxn=”100000+10;“ maxxy=”MAX(x,y)“ memsetxysizeofx=”memset(x,y,sizeof(x))“ mid=”mid)“ mid1=”mid+1,“ ml=”ml,“ mlmaxnltlt2=”ml[MAXN<<2];“ mlroot=”ml[lroot];“ mr=”mr,“ mrmaxnltlt2=”mr[MAXN<<2];“ mrroot=”mr[lroot];“ msum=”msum,“ msummaxnltlt2=”msum[MAXN<<2];“ msumroot=”msum[lroot];“ msumrroot=”msum[rroot]){“ msxy=”ms(x,y)“ n=”n);“ n.ll=”ll[root];“ n.lr=”lr[root];“ n.lsum=”lsum[root];“ n.ml=”ml[root];“ n.mr=”mr[root];“ n.msum=”msum[root];“ n.rl=”rl[root];“ n.rr=”rr[root];“ n.rsum=”rsum[root];“ n.sum=”sum[root];“ namespace=”namespace“ node=”Node“ pre=”pre“ printf=”printf();“ printfcase=”printf(Case“ queryint=”query(int“ r=”r,“ res=”query(lroot,“ res.rsum=”res.rsum“ res1=”res1;“ res1.ll=”res.ll;“ res1.lr=”res.lr;“ res1.lsum=”res1.lsum){“ res1.ml=”res.ml;“ res1.mr=”res.mr;“ res1.msum=”res.msum;“ res1.rl=”res2.rl;“ res1.rr=”res2.rr;“ res1.rsum=”res2.rsum;“ res1.sum=”res.sum“ res2=”query(rroot,“ res2.lsum=”res2.lsum){“ res2.msum=”res2.msum){“ res2.sum=”res2.sum;“ resres1res2=”res,res1,res2;“ return=”return“ right=”=“ rightgtgt1=”right)>>1;“ rl=”rl,“ rlmaxnltlt2=”rl[MAXN<<2];“ rlroot=”rl[rroot];“ root=”root,“ rr=”rr;“ rrmaxnltlt2=”rr[MAXN<<2];“ rroot=”root<<1|1;“ rrroot=”rr[rroot];“ rsum=”rsum,“ rsumlroot=”rsum[lroot]“ rsummaxnltlt2=”rsum[MAXN<<2];“ rsumroot=”rsum[rroot];“ scanfd=”scanf(%d,“ sl=”sum[lroot]“ sr=”sum[rroot]“ std=”std;“ stdin=”stdin);“ stdio.hgt=”stdio.h><“ stdlib.hgtlt=”stdlib.h><“ string.hgtlt=”string.h><“ struct=”struct“ sum=”sum;“ summaxnltlt2=”sum[MAXN<<2];“ sumroot=”&sum[root]);“ sumrroot=”sum[rroot];“ t=”&T);“ upint=”up(int“ uproot=”up(root);“ using=”using“ void=”void“ w=”++w,“ whilet--=”while(T--)“ xgtyx:y=”((x)>(y)?(x):(y))“ 维护前缀=”维护前缀“ 维护区间最值=”维护区间最值“ 维护后缀=”维护后缀">

方法五:扫一遍,累加sum, 当sum < 0 时,置sum 为0,

如:

-1 5 7 -9 2 -7 -2 1 3 可分成

-1 | 5 12 3 5 | -7 | -2 | 1 4

竖线为分界。比较每个区间,取最大值。

思路来自:blog.csdn.net/hcbbt/article/details/10454947

#include#include#includeint main(){ //freopen(in.txt, r, stdin); int T, w = 0; int n, num; int beg, end, max_s, tmp; int i, k; scanf(%d, &T); while(T--) { scanf(%d, &n); max_s = -(1<<30); tmp = 0; beg = end = k = 1; for(i=1; i<=n; i++){ scanf(%d, &num); tmp += num; if(tmp >max_s){ max_s = tmp; beg = k; end = i; } if(tmp < 0){ tmp = 0; k = i + 1; } } printf(Case %d:%d %d %d, ++w, max_s, beg, end); if(T) printf(); } return 0;}

篇4:九度OJ―题目1011:最大连续子序列

上一篇www.2cto.com/kf/12/363594.html

题目描述:给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, Ni+1, ..., Nj },其中 1 <= i <= j <= K,最大连续子序列是所有连续子序列中元素和最大的一个,例如给定序列{ -2, 11, -4, 13, -5, -2 },其最大连续子序列为{ 11, -4, 13 },最大和为20。现在增加一个要求,即还需要输出该子序列的第一个和最后一个元素。输入:

测试输入包含若干测试用例,每个测试用例占2行,第1行给出正整数K( K< 10000 ),第2行给出K个整数,中间用空格分隔。当K为0时,输入结束,该用例不被处理。

输出:

对每个测试用例,在1行里输出最大和、最大连续子序列的第一个和最后一个元素,中间用空格分隔,

如果最大连续子序列不唯一,则输出序号i和j最小的那个(如输入样例的第2、3组)。若所有K个元素都是负数,则定义其最大和为0,输出整个序列的首尾元素。

样例输入:

6-2 11 -4 13 -5 -210-10 1 2 3 4 -5 -23 3 7 -2165 -8 3 2 5 01103-1 -5 -23-1 0 -20样例输出:

20 11 1310 1 410 3 510 10 100 -1 -20 0 0来源:浙江大学计算机及软件工程研究生机试真题答疑:

篇5:基于IGS连续跟踪站的GPS高程时间序列分析

基于IGS连续跟踪站的GPS高程时间序列分析

对全球分布的IGS连续跟踪站GPS高程分量时间序列,进行了小波多分辨率分析,发现各台站高程时间序列大都存在着季节性变化,这种以半周年项和周年项为主的季节性变化是由多种地球物理现象引起的,我们从多个方面分析了原因,并着重分析了大气压强的影响.利用分析的'结果讨论了地壳垂直变化的规律,得出地球存在以半年和周年为周期的整体性扩张与收缩振荡运动,同时南北半球的变化规律存在差异的结论.

作 者:杨强 党亚民 秘金钟 YANG Qiang DANG Ya-ming BEI jin-zhong  作者单位:杨强,YANG Qiang(中国测绘科学研究院,大地测量与地球动力学研究所,北京,100039;山东科技大学,地球信息科学与工程学院,山东,青岛,266510)

党亚民,秘金钟,DANG Ya-ming,BEI jin-zhong(中国测绘科学研究院,大地测量与地球动力学研究所,北京,100039)

刊 名:测绘科学  ISTIC PKU英文刊名:SCIENCE OF SURVEYING AND MAPPING 年,卷(期): 32(3) 分类号:P228 关键词:GPS高程时间序列   小波多分辨率分析   地壳垂直形变  

篇6:非典型性肺炎S蛋白抗原决定簇序列的串联合成和表达

非典型性肺炎S蛋白抗原决定簇序列的串联合成和表达

非典型性肺炎病毒的S蛋白是病毒表面最主要的膜蛋白,它在病毒与受体结合和病毒的早期感染过程中起重要的作用.S蛋白也是SARS病毒主要的免疫原,是用来研制保护性疫苗的理想部位.研究表明S蛋白的抗原表位比较多且分散,并且由于分子量比较大,因此对其抗原表位的研究就有重要意义.根据已有的资料报道和软件分析,本实验将S蛋白的主要抗原表位及受体结合区串联在一起,利用基因合成的方法合成了这段串联基因.并通过基因操作构建了表达合成基因的原核重组质粒pET-28a-S合,转化大肠杆菌并诱导目的`蛋白的表达,SDS-PAGE检测结果表明,重组菌能够表达目的蛋白,其表达量占菌体总蛋白的23.5%.Western blot分析结果证实该重组蛋白具有良好的免疫原性.

作 者:孙兆增 张玉静 孙博兴 SUN Zhao-zeng ZHANG Yu-jing SUN Bo-xing  作者单位:吉林大学,农学部,畜牧兽医学院,吉林,长春,130062 刊 名:中国预防兽医学报  ISTIC PKU英文刊名:CHINESE JOURNAL OF PREVENTIVE VETERINARY MEDICINE 年,卷(期): 28(4) 分类号:Q786 S852.65 关键词:非典型性肺炎   S蛋白   抗原决定簇   基因合成  

篇7:为WPS演示文档插入连续背景音乐

在使用WPS2009演示编辑文稿时,为了营造一个好的播放氛围,需要在演示文稿中插入连续播放的背景音乐,操作方法如下,

首先把幻灯片全部做好,然后依次单击“插入→影片和声音→文件中的声音”选项,在对话框中选择要插入的声音文件,随后在出现系统提示的对话框“你希望在幻灯片放映时如何开始播放声音?”中选择 “自动”选项,

接下来单击刚刚插入的声音图标,依次单击“幻灯片放映→自定义动画”选项,在幻灯片右侧出现“自定义动画”窗口,窗口中列出了该幻灯片中的全部对象,单击“声音对象”旁的三角形按钮,在菜单中选择“效果选项…”选项。

在弹出的“播放”对话框中,切换“计时”选项卡,然后在“重复”方框内选择“直到幻灯片末尾”选项,单击“确定”按钮即可。这样指定的声音文件就可以在幻灯片中连续播放了。

篇8:python简单判断序列是否为空的方法

作者:mingaixin 字体:[增加 减小] 类型:

这篇文章主要介绍了python简单判断序列是否为空的方法,可通过if语句实现简单的判断功能,需要的朋友可以参考下

本文实例讲述了python简单判断序列是否为空的方法,分享给大家供大家参考,

具体如下:

假设有如下序列:

m1 = []m2 = m3 = {}

判断他们是否为空的高效方法是:

if m1: ......if not m2: ......

希望本文所述对大家的Python程序设计有所帮助。

篇9:有理矩形片和有理S曲面片之间的GC1连续条件

有理矩形片和有理S曲面片之间的GC1连续条件

光滑拼接是S曲面片的性质之一.讨论了有理Bézier矩形片和有理S曲面片之间GC1连续的充分必要条件.而且进一步得到了两曲面片GC1连续的.一个充分条件.

作 者:张铭丽 ZHANG Ming-li  作者单位:山东建筑大学理学院,济南,250101 刊 名:科学技术与工程  ISTIC英文刊名:SCIENCE TECHNOLOGY AND ENGINEERING 年,卷(期):2009 9(9) 分类号:O186.13 关键词:有理矩形片   连续   有理S曲面片   rational rectangular patch   continuity   rational S-patch  

正数和负数练习题

正数和负数课件

正数和负数说课稿

正数和负数教案讲课稿

比较正数和负数的大小说课稿

初中数学正数和负数教案合集

高二作文序列

连续造句

为WPS演示文档插入连续背景音乐

s读后感

和为s的连续正数序列(共9篇)

欢迎下载DOC格式的和为s的连续正数序列,但愿能给您带来参考作用!
推荐度: 推荐 推荐 推荐 推荐 推荐
点击下载文档 文档为doc格式
点击下载本文文档