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 }
                    
                
                
            
        
浙公网安备 33010602011771号