首页 > 试题广场 >

小店的经营分析

[编程题]小店的经营分析
  • 热度指数:840 时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 512M,其他语言1024M
  • 算法知识视频讲解
小张开了一家小小的咖啡店,他习惯于记录每天的盈利状况。
盈利记为正数,亏损则记为负数。
经过一段时间的经营,他收集了连续 N 天的经营数据。

为了评估不同时段的经营效益,小张设定了一个“目标利润区间” [L, R]
他现在想知道,在这 N 天里,有多少个连续的经营周期(例如,从第 i 天到第 j 天),其总利润恰好落在了他设定的目标区间内?

这个问题对小张来说有些复杂,您能编程帮他快速统计出结果吗?

输入描述:
第一行 : 一个整数 N,代表记录的总天数。
(1 < N \le 10000)
第二行 : N 个整数,代表一个数组 P,其中 P_i 表示第 i 天的利润或亏损。
(-255 \le P_i \le 255)
第三行 : 两个整数 LR,用空格隔开,代表目标利润区间的左右边界。
(-2550000 \le L \le R \le 2550000)


输出描述:
一个整数,表示总利润在区间 [L, R] 内的连续经营周期的总数量。
示例1

输入

4
1 -1 1 -1
0 0

输出

4
示例2

输入

3
-3 4 -2
-3 2

输出

5

备注:
本题由牛友@Charles 整理上传
#include <stdio.h>

int main() {
    int n, l,r,p[10000],pre[10001];
    int count=0;
    scanf("%d",&n);
    for(int i=0;i<n;i++)
        scanf("%d",&p[i]);
    scanf("%d",&l);
    scanf("%d",&r);
    pre[0]=0;
    for(int i=0;i<n;i++)
        pre[i+1]=pre[i]+p[i];
    for (int i = 0; i < n; i++) {
        // 内层:子数组结束位置j(j >= i)
        for (int j = i; j < n; j++) {
            // 计算p[i]到p[j]的和 = pre[j+1] - pre[i]
            int sum = pre[j+1] - pre[i];
            // 判断是否在区间内
            if (sum >= l && sum <= r) {
                count++;
            }
        }
    }
    printf("%d",count);              
}
发表于 2026-01-07 21:18:23 回复(0)