PAT(乙级)2020年秋季考试 7-5 买地攻略 (25分)

7-5 买地攻略 (25分)
 

数码城市有土地出售。待售的土地被划分成若干块,每一块标有一个价格。这里假设每块土地只有两块相邻的土地,除了开头和结尾的两块是只有一块邻居的。每位客户可以购买多块连续相邻的土地。

现给定这一系列土地的标价,请你编写程序,根据客户手头的现金量,告诉客户有多少种不同的购买方案。

输入格式:

输入首先在第一行给出两个正整数:N(≤)为土地分割的块数(于是这些块从 1 到 N 顺次编号);M(≤)为客户手中的现金量。

随后一行给出 N 个正整数,其中第 i 个数字就是第 i 块土地的标价。

题目保证所有土地的总价不超过 1。

输出格式:

在一行中输出客户有多少种不同的购买方案。请注意客户只能购买连续相邻的土地。

输入样例:

5 85
38 42 15 24 9
 

输出样例:

11
 

样例解释:

这 11 种不同的方案为:

38
42
15
24
9
38 42
42 15
42 15 24
15 24
15 24 9
24 9

代码讲解:此题看时间是很紧的,按道理o(n^2)的算法应该会部分测试
数据超时,但是不知道为什么这题没有,直接o(n^2)的算法就可以过了。。
成为这五道题里最简单的一道了。。。。



 1 #include<stdio.h>
 2 #include<math.h>
 3 int main()
 4 {
 5     int n,m,i,j,sum=0,count=0;
 6     scanf("%d %d",&n,&m);
 7     int a[n];
 8     for(i=0;i<n;i++)
 9     scanf("%d",a+i);
10     for(i=0;i<n;i++)
11     {
12         sum=0;
13        for(j=i;j<n;j++)
14        {
15          sum+=a[j];
16         if(sum<=m)
17         count++;
18         else
19         break;
20        }
21     }
22     printf("%d\n",count);
23     return 0;
24 }

 







posted @ 2020-12-01 22:56  罪梦者  阅读(171)  评论(0)    收藏  举报