问题标题: 酷町堂:1265 数据分组

0
0
已解决
汪恺恒
汪恺恒
中级启示者
中级启示者

题目描述 Description

给定一个正整数数组,长度为N,不打乱其顺序将其分为连续的若干组,每组之和小于等于S,问最少分多少组。

输入描述 Input Description

输入两行,第一行为N与S,用一个空格隔开。第二行为N个正整数。
【数据范围】
对于50%的数据,有N≤1000;
对于100%的数据,有N≤10000,S≤10^9,N个数都不大于S。

输出描述 Output Description

输出最少的划分数。

WA10

#include<bits/stdc++.h>
#include<iostream>
#include<cstring>
using namespace std;
int a[10100];
int n,s,ans,sum;
int main(){
    cin>>n>>s;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    for(int i=1;i<=n;i++){
        if(sum>=s){
            ans++;
            sum=0;
        }
        else{
            sum+=a[i];
        }
    }
    cout<<ans+1;
    return 0;
}

 


0
已采纳
张帆
张帆
中级天翼
中级天翼

循环内if判断条件得改成sum+a[i]>s,则ans++,sum=a[i];

不然会报错,

本蒟蒻的循环体:

cin>>a[i];
        if(ans+a[i]>s){
            ans=a[i];
            pos++;
        } else {
            ans+=a[i];
        }

 

我要回答