浙大PAT 1007题 1007. Maximum Subsequence Sum

2024-02-26 22:18

本文主要是介绍浙大PAT 1007题 1007. Maximum Subsequence Sum,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

注意题目要求是输出首尾元素,而不是首尾元素的下标,自己隔了很久敲一下代码,两次有点差别啊!

第一次:

#include<stdio.h>
int main(){
int i,j,K,flag=0;
int sub[10008];
int frst=10008,last,maxs=-1,sum=0;
int temp=0;
scanf("%d",&K);
for(i=0;i<K;i++){
scanf("%d",&sub[i]);
if(sub[i]>=0) flag=1;
}
if(flag==0){
printf("0 %d %d\n",sub[0],sub[K-1]);
}
else{
for(i=0;i<K;i++){
sum=sum+sub[i];  
if(sum>maxs){
maxs=sum;
frst=temp;
last=i;
}    
else if(sum<0){
sum = 0;
temp=i+1; 
}  
}
printf("%d %d %d\n",maxs,sub[frst],sub[last]);
}
return 0;
} 


第二次:

#include<stdio.h>
int main(){
int i,j,n;
int arr[10005];
int sum=0,imax=-1,fst=0,last=0,mark=0,ftmp=0;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&arr[i]);
sum=sum+arr[i];
if(sum>0&&mark==0){
ftmp=arr[i];
mark=1;
}
if(sum>imax){
imax=sum;
fst=ftmp;
last=arr[i];
}
if(sum<0){
sum=0;
mark=0;
}
}
if(imax==-1)
printf("0 %d %d\n",arr[0],arr[n-1]);
else
printf("%d %d %d\n",imax,fst,last);
return 0;
}


 

 

 

 

这篇关于浙大PAT 1007题 1007. Maximum Subsequence Sum的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/750330

相关文章

最大流=最小割=最小点权覆盖集=sum-最大点权独立集

二分图最小点覆盖和最大独立集都可以转化为最大匹配求解。 在这个基础上,把每个点赋予一个非负的权值,这两个问题就转化为:二分图最小点权覆盖和二分图最大点权独立集。   二分图最小点权覆盖     从x或者y集合中选取一些点,使这些点覆盖所有的边,并且选出来的点的权值尽可能小。 建模:     原二分图中的边(u,v)替换为容量为INF的有向边(u,v),设立源点s和汇点t

浙大数据结构:树的定义与操作

四种遍历 #include<iostream>#include<queue>using namespace std;typedef struct treenode *BinTree;typedef BinTree position;typedef int ElementType;struct treenode{ElementType data;BinTree left;BinTre

浙大数据结构:04-树7 二叉搜索树的操作集

这道题答案都在PPT上,所以先学会再写的话并不难。 1、BinTree Insert( BinTree BST, ElementType X ) 递归实现,小就进左子树,大就进右子树。 为空就新建结点插入。 BinTree Insert( BinTree BST, ElementType X ){if(!BST){BST=(BinTree)malloc(sizeof(struct TNo

如何导入sun.misc.BASE64Encoder和sum.misc.BASE64Decoder

右击项目名--->Build Path--->Configure Build Path...--->java Build Path--->Access rules:1 rule defined,added to all librar...   --->Edit --->Add...

浙大数据结构:02-线性结构4 Pop Sequence

这道题我们采用数组来模拟堆栈和队列。 简单说一下大致思路,我们用栈来存1234.....,队列来存输入的一组数据,栈与队列进行匹配,相同就pop 机翻 1、条件准备 stk是栈,que是队列。 tt指向的是栈中下标,front指向队头,rear指向队尾。 初始化栈顶为0,队头为0,队尾为-1 #include<iostream>using namespace std;#defi

leetcode#628. Maximum Product of Three Numbers

题目 Given an integer array, find three numbers whose product is maximum and output the maximum product. Example 1: Input: [1,2,3]Output: 6 Example 2: Input: [1,2,3,4]Output: 24 Note: The lengt

浙大数据结构——03-树1 树的同构

这道题我依然采用STL库的map,从而大幅减少了代码量 简单说一下思路,两棵树是否同构,只需比较俩树字母相同的结点是否同构,即是否左==左,右==右或者左==右,右==左。 1、条件准备 atree和btree是存两个数结点字母,第几个就存输入的第几个结点的字母。 map通过结点的字母作为键,从而找到两个子节点的信息 都要用char类型 #include <iostream>#inc

浙大数据结构:堆栈和队列的定义与操作

堆栈: 顺序存储: #include<stdio.h>#include<stdlib.h>typedef int ElementType ;typedef int position ;#define MAXSIZE 100#define ERROR -1struct SNode {ElementType * Data ;position top;int Maxsize;};

18. 4 Sum

题目: 解答: 与之前的三数之和的解法类似,也是先排序,然后不断剔除不可能的条件,最后两个参数,通过两头求和计算得出。 代码: class Solution {public:vector<vector<int>> fourSum(vector<int>& nums, int target) {vector<vector<int>> result;int len = nums.size

apt-get update更新源时,出现“Hash Sum mismatch”问题

转载自:apt-get update更新源时,出现“Hash Sum mismatch”问题 当使用apt-get update更新源时,出现下面“Hash Sum mismatch”的报错,具体如下: root@localhost:~# apt-get update ...... ...... W: Failed to fetch http://us.archive.ubuntu.com/ub