OD统一考试(B卷)分值: 100分题解: Java / Python / C++题目描述有N个正整数组成的一个序列。给定整数sum,求长度最长的连续子序列,使他们的和等于sum,返回此子序列的长度,如果没有满足要求的序列,返回-1。输入描述第一行输入是:N个正整数组成的一个序列。第二行输入是:给定整数 sum。输出描述最长的连续子序列的长度。备注输入序列仅由数字和英文逗号构成,数字之间采用英文逗号分隔序列长度:1 <= N <= 200输入序列不考虑异常情况示例1输入:1,2,3,4,26输出:3说明:1,2,3和4,2两个序列均能满足要求,所以最长的连续序列为1,2,3,因此结果为3。题解数据量不大,简单的两层循环暴力即可。Javaimport java.util.Arrays;import java.util.Scanner;/** * @author code5bug */public class Main {    public static void main(String[] args) {        Scanner scanner = new Scanner(System.in);        // 读取整数数组        int[] arr = Arrays.stream(scanner.nextLine().split(","))                .mapToInt(Integer::parseInt)                .toArray();        int sum = scanner.nextInt(), result = -1;        for (int i = 0; i < arr.length; i++) {            int tot = 0;            for (int j = i; j < arr.length; j++) {                tot += arr[j];                if (tot == sum) {                    result = Math.max(result, j - i + 1);                } else if (tot > sum) {                    break;                }            }        }        System.out.println(result);    }}Pythonarr = list(map(int, input().split(',')))sum, result = int(input()), -1for i in range(len(arr)):    tot = 0    for j in range(i, len(arr)):        tot += arr[j]        if tot == sum:            result = max(result, j - i + 1)        elif tot > sum:            breakprint(result)C++#include <iostream>#include <vector>using namespace std;int main() {    vector<int> arr;    int t, sum;    while(cin >> t) {        arr.push_back(t);        if(cin.peek() == ',') {            cin.ignore();        } else {            cin >> sum;            break;        }    }    int result = -1;    for(int i = 0; i < arr.size(); i++) {        for(int j = i, tot = 0; j < arr.size() && tot <= sum; j++) {            tot += arr[j];            if(tot == sum) {                result = max(result, j - i + 1);            }        }    }    cout << result << endl;    return 0;}🙏整理题解不易, 如果有帮助到您,请给点个赞 ‍❤️‍ 和收藏 ⭐,让更多的人看到。🙏🙏🙏
点赞 8
评论 5
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-29 11:57
投递浪潮等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务