TB椰程 TypeBuddy 打字搭子

【例28.3】 数列分段

C++语法 · 循环结构 · 代码 · cpp · 难度 4/5 · 共 497 字

数列分成若干段使每段和不超过 m,求最少段数

  • C++语法
  • 例题

正文

// 原题:https://oj.yecheng.tv/p/P169
// 题意:把数列切成连续若干段,
//       每段和不超过 m,求最少段数。
// 思路:贪心——能往当前段塞就塞,
//       塞不下就新开一段,段数加 1。
#include <iostream>
using namespace std;

int main() {
    int n, m;
    cin >> n >> m;
    int segs = 1, cur = 0;
    for (int i = 0; i < n; i++) {
        int x;
        cin >> x;
        if (cur + x > m) {
            // 当前段装不下,另起一段
            segs++;
            cur = x;
        } else {
            cur += x;
        }
    }
    cout << segs << endl;
    return 0;
}

C++语法 · 循环结构的其它内容

打字首页 · 词库画廊 · 编程打字 · 指法入门 · 天梯榜 · 数据分析 · 班级课堂 · 关于我们
椰程 TypeBuddy 打字搭子 —— 键盘指法练习 · 单词记忆 · 班级课堂 · 在线 PK