虽然只做出了一个题,但是第二题跟第三题也有思路,就是单位时间解题效率不高导致没有做完,所以以后要多做题来加强一下。
第一题:
题目要求看能否让所有排队的人都能正好买到票拿到找零;
分析:
运用新学的STL中的map容器,将面值与数量存入容器中;
注:
当收到100要找零75时,应该注意找零顺序,有50就给50和25,没有50再给25和50;不然下一个拿50的就没法找零了;
代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
map<int,int>m;
int i,j=0,k,x,n;
vector<int>v;
map<int,int>::iterator
p1,p2;
cin>>n;
for(i=0;i<n;i++)
{
cin>>x;
v.push_back(x);
}
m.insert(make_pair(25,0));
m.insert(make_pair(50,0));
p1=m.find(25);
p2=m.find(50);
for(i=0;i<n;i++)
{
if(v[i]==25)
{
(p1->second)+=1;
}
else if(v[i]==50)
{
if((p1->second)!=0)
{
(p1->second)-=1;
(p2->second)+=1;
}
else {j=1;}
}
else if(v[i]==100)
{
if((p1->second)>=1&&(p2->second)>=1)
{
p1->second-=1;
p2->second-=1;
}
else if((p1->second)>=3)
p1->second-=3;
else {j=1;}
}
if(j==1)
break;
}
if(j==0)
cout<<"YES"<<endl;
else cout<<"NO"<<endl;
return 0;
}
感想:
一个很简单的题,但是因为一开始的思考不够周到,导致没有考虑到找钱的顺序,后来又因为想要早点提交,导致两次失误,没有先运行一遍就直接上传,导致错误了两次,以后做题一定要注意不能着急,考虑问题要周全,欲速则不达!
购票找零问题解析
本文通过使用C++ STL中的map容器解决了一个购票找零问题,确保每位顾客都能准确获得所需的找零金额。讨论了不同面额找零的顺序对后续交易的影响,并分享了从此次编程实践中得到的经验教训。
882

被折叠的 条评论
为什么被折叠?



