美文网首页笔试&&面试经验算法编程
多语言解编程题之最大子串和

多语言解编程题之最大子串和

作者: 剪影Boy | 来源:发表于2017-08-28 15:37 被阅读4次

给予一个整数字符串,找出所有连续子串和的最大值。
样例输入:-23 17 -7 11 -2 1 -34
样例输出:21

JavaScript(Node)实现

const readline = require('readline');
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});
rl.on('line', function(line) {
    let str = line;
    let res = findMaxSum(str);
    console.log(res);
});

function findMaxSum(str) {
    let arr = str.split(' ').map(val => +val);
    let len = arr.length;
    let sum = Number.MIN_SAFE_INTEGER;
    let temp;
    for (let i = 0; i < len; i++) {
        temp = 0;
        for (let j = i; j < len; j++) {
            temp += arr[j];
            if (temp > sum) {
                sum = temp;
            }
        }
    }
    return sum;
}

PHP实现

<?php
    $handle = fopen("php://stdin", "r");
    $str = fgets($handle);
    while ($str !== "") {
        echo findMaxSum($str) . "\n";
        $str = fgets($handle);
    }
    fclose($handle);

    function findMaxSum($str) {
        $arr = array_map("intval", explode(" ", $str));
        $len = count($arr);
        $sum = PHP_INT_MIN;
        for ($i = 0; $i < $len; $i++) {
            $temp = 0;
            for ($j = $i; $j < $len; $j++) {
                $temp += $arr[$j];
                if ($temp > $sum) {
                    $sum = $temp;
                }
            }
        }
        return $sum;
    }

C++实现

#include <iostream>
#include <string>
#include <sstream>
#include <vector>
#include <limits>
using namespace std;

int findMaxSum(string s) {
    stringstream iss(s);
    int number;
    vector<int> v;
    while(iss >> number) {
        v.push_back(number);
    }
    int n = v.size();
    int sum = numeric_limits<int>::min();
    int temp;
    for (int i = 0; i < n; i++) {
        temp = 0;
        for (int j = i; j < n; j++) {
            temp += v[j];
            if (temp > sum) {
                sum = temp;
            }
        }
    }
    return sum;
}

int main() {
    string s;
    while (getline(cin, s)) {
        cout << findMaxSum(s) << endl;
    }
    return 0;
}

题目比较简单,主要是熟悉一下各种语言的写法。

以上。

个人技术博客 biebu.xin,原文链接——多语言解编程题之最大子串和

相关文章

  • 多语言解编程题之最大子串和

    给予一个整数字符串,找出所有连续子串和的最大值。样例输入:-23 17 -7 11 -2 1 -34样例输出:21...

  • 动态规划算法入门_python3

    有这一道题,计算给定字符串中最大子符串的和,如 10 ,-2 ,3,4返回其最大子串的和,思路,假设这个子串第i位...

  • DP之最大子串

    1. a的n次幂,如何高效计算 2. 最大子串 考虑用dp,解决重复计算 2.1 DP要处理的一种情况是,新元素加...

  • 每日一题之最大子序和

    题目53:连续子数组的最大和 输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求...

  • 美团2021校招笔试-编程题(通用编程试题,第9场)

    美团2021校招笔试-编程题(通用编程试题,第9场) T3 环形的最大连续子数和分成两种情况: 这个最大子数组没有...

  • [编程题]最大子矩阵

    已知矩阵的大小定义为矩阵中所有元素的和。给定一个矩阵,你的任务是找到最大的非空(大小至少是1 * 1)子矩阵。 比...

  • leetcode 刷题初体验

    开始喜欢上刷题,也愿意在一个问题上不断寻求最优解比如求最大子序和这道题从O(n2)到O(n)再到分治法求解(分治法...

  • 2018-12-31[LeetCode 53.Maximum S

    [LeetCode 53.Maximum Subarrays] 描述: 问题是求解最大子串的和,返回该和。(子串与...

  • 【5月】LeetCode:我怎么还是这么菜

    5.3 题目链接 53. 最大子序和 很喜欢的解法(DP) 官方解(分治) 参考题解:最大子序和 但是仔细观察「方...

  • 动态规划

    最大子串和 Maximum Subarray 最长上升子序列Longest Increasing Subsequence

网友评论

    本文标题:多语言解编程题之最大子串和

    本文链接:https://www.haomeiwen.com/subject/acrgdxtx.html