B3848 [GESP样题 三级] 逛商场
题意
小明买东西,买的起的买,买不起的跳过。
思路
- 定义数,数组。
- for循环,if判断。
- 输出个数。
坑点
- 没有,简单,数组里的数一定是定值,为防止吃亏,要在原来数上加5~10。
算法一:单个for循环的输入,输出+数组的输入,输出+for循环与if语句的嵌套
时间复杂度
- 输出大小: 1.83242034912109 MiB
- 编译时间: 0.70s
实现步骤
- 定义数与数组,输入数组,定义计数器计数买的起的物品的数量,定义小明的零花钱。
- for循环里嵌套if,if条件里面,c++:买的起就加一,买不起就跳过,m=m-a[i]:剩下的金额减去价格。
- 输出买的东西个数。
代码
#include<iostream>
#include<stdio.h>
#include<algorithm>
using namespace std;
int main()
{
int n;//想买的物品数
cin>>n;
int a[n+10],c=0;//c为购买的物品数
for(int i=0;i<n;i++)
{
cin>>a[i];//价格
}
int m;//拥有的钱
cin>>m;
for(int i=0;i<n;i++)
{
if(a[i]<=m)
{
c++;
m=m-a[i];
}
}
cout<<c;
return 0;
}
总结
很简单,很简单,掌握for循环,数组的输入、输出和for循环与if语句的嵌套就行了,其他都是数学问题。还有就是:if条件判断里有数组一定是数组在前(<=/>=)一个数。否则会出错。