2021年计算机类数据结构作业1

本文涵盖了数据结构中的多个问题,包括最大连续子序列和问题、去除重复字母、乒乓球发球规则判断、三角形形状识别及多项式求值。详细描述了每个问题的输入输出格式,并给出了样例及AC代码。
摘要由CSDN通过智能技术生成

问题 D: 最大连续子序列和问题

题目描述

给定整数序列A1,A2,…,An,对其所有连续子序列求和,寻找累加和最大的序列。如果所有的整数都是负的,那么最大连续子序列的和为0。

输入格式

输入包括多组测试数据,每组测试数据一行,每行第一个为正整数n(0 < n <= 100000),表示序列长度,紧跟着n个整数,Ai (-1001<Ai < 1001),表示序列每个元素,各个整数之间用空格隔开。

输出格式

针对每组测试数据,输出最大连续子序列的和,以及该最大连续子序列的起止位置。当最大连续子序列的长度为0时,序列的起止位置都输出为-1。如果有多个连续子序列的值为最大值,输出第一个连续子序列。
多组输出用换行隔开

输入样例

6 -2 11 -4 13 -5 2
1 -1

输出样例

20 1 3
0 -1 -1

AC代码

#include<bits/stdc++.h>
using namespace std;
#define rg register
#define RP(i,a,b) for(register int i=a;i<=b;++i)
#define DRP(i,a,b) for(register int i=a;i>=b;--i)
#define fre(z) freopen(z".in","r",stdin),freopen(z".out","w",stdout)
#define ll long long
#define mod 998244353
//#define lll long long
//#define lll __int128
int main()
{
   
    std::ios::sync_with_stdio(false);
    int n;
    while(cin>>n)
    {
   
        int arr[n+1];
        int num=0;
        for(int i=0;i<n;i++)
        {
   
            cin>>arr[i];
            if(arr[i]<0)
            {
   
                num++;
            }
        }
        if(num==n)
        {
   
            cout<<0<<" "<<"-1 -1"<<endl;
            continue;
        }
        int maxs=arr[0];
        int sumi=0;
        int a=0,b=0,temp=0;
        for(int i=0;i<n;i++)
        {
   
            sumi+=arr[i];
            if(sumi>maxs)
            {
   
                maxs=sumi;
                b=a;
                temp=i;
            }
            if(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值