首页 > 其他分享 >HJ98 自动售货系统

HJ98 自动售货系统

时间:2024-09-05 15:04:13浏览次数:1  
标签:return int sum 售货 HJ98 自动 zhangshu Toubi mz

题目:https://www.nowcoder.com/practice/cd82dc8a4727404ca5d32fcb487c50bf?tpId=37&tqId=21321&rp=1&ru=/exam/oj/ta&qru=/exam/oj/ta&sourceUrl=%2Fexam%2Foj%2Fta%3FtpId%3D37&difficulty=undefined&judgeStatus=undefined&tags=&title=

题意就是编写一个自动售货机的系统,能够完成一些基本的操作。难点主要在于处理读入和码量。

不是,哥们,好大一坨模拟啊= =

我足足写了267行= =

不过倒是很好调。。虽然难度标着“困难”,感觉也就只有码量是“困难”的,别的都挺好处理的。

  1 #include<bits/stdc++.h>
  2 using namespace std;
  3 char c,cML;
  4 int SPshu[7],zhangshu[5],Toubi,sum=0;
  5 int SPjia[7],Tuibi[5],Q,mz[5],f;
  6 struct SP{
  7     int shu,id;
  8 }sp[7];
  9 bool cmp(const SP&a,const SP&b){
 10     if(a.shu>b.shu)return 1;
 11     if(a.shu<b.shu)return 0;
 12     return a.id<b.id;
 13 }
 14 void InputR(){
 15     c=getchar();
 16     c=getchar();
 17     int cnt=0;
 18     while(1){
 19         int x=0;
 20         while(c!='-'&&c!=' '){
 21             x=x*10+c-'0';
 22             c=getchar();
 23         }
 24         SPshu[++cnt]=x;
 25         if(c!=' ') c=getchar();
 26         else break;
 27     }
 28     c=getchar();
 29     cnt=0;
 30     while(1){
 31         int x=0;
 32         while(c!='-'&&c!=';'){
 33             x=x*10+c-'0';
 34             c=getchar();
 35         }
 36         zhangshu[++cnt]=x;
 37         if(c!=';') c=getchar();
 38         else break;
 39     }
 40     return;
 41 }
 42 void OutputR(){
 43     puts("S001:Initialization is successful");
 44     return;
 45 }
 46 void InputP(){
 47     c=getchar();
 48     c=getchar();
 49     int x=0;
 50     while(c!=';'){
 51         x=x*10+c-'0';
 52         c=getchar();
 53     }
 54     Toubi=x;
 55     return;
 56 }
 57 void OutputP(int x){
 58     if(x==2){
 59         puts("E002:Denomination error");
 60         return;
 61     }
 62     if(x==3){
 63         puts("E003:Change is not enough, pay fail");
 64         return;
 65     }
 66     if(x==5){
 67         puts("E005:All the goods sold out");
 68         return;
 69     }
 70     if(x==6){
 71         printf("S002:Pay success,balance=%d\n",sum);
 72         return;
 73     }
 74     return;
 75 }
 76 void WorkP(){
 77     if(Toubi!=1&&Toubi!=2
 78     &&Toubi!=5&&Toubi!=10){
 79         OutputP(2);
 80         return;
 81     }
 82     if(Toubi==5||Toubi==10){
 83         if(zhangshu[1]+2*zhangshu[2]<Toubi){
 84             OutputP(3);
 85             return;
 86         }
 87     }
 88     bool f=0;
 89     for(int i=1;i<=6;i++)
 90         if(SPshu[i]>0) f=1;
 91     if(f==0){
 92         OutputP(5);
 93         return;
 94     }
 95     sum+=Toubi;
 96     if(Toubi==1||Toubi==2) zhangshu[Toubi]++;
 97     if(Toubi==5) zhangshu[3]++;
 98     if(Toubi==10) zhangshu[4]++;
 99     OutputP(6);
100     return;
101 }
102 void OutputB(int x){
103     if(x==6){
104         puts("E006:Goods does not exist");
105         return;
106     }
107     if(x==7){
108         puts("E007:The goods sold out");
109         return;
110     }
111     if(x==8){
112         puts("E008:Lack of balance");
113         return;
114     }
115     if(x==3){
116         printf("S003:Buy success,balance=%d\n",sum);
117         return;
118     }
119     return;
120 }
121 void WorkB(int x){
122     if(x<1||x>6){
123         OutputB(6);
124         return;
125     }
126     if(SPshu[x]==0){
127         OutputB(7);
128         return;
129     }
130     if(sum<SPjia[x]){
131         OutputB(8);
132         return;
133     }
134     sum-=SPjia[x];
135     OutputB(3);
136     return;
137 }
138 void InputB(){
139     c=getchar();
140     c=getchar();
141     c=getchar();
142     int x=c-'0';
143     WorkB(x);
144     c=getchar();
145     return;
146 }
147 void OutputC(int x){
148     if(x==9){
149         puts("E009:Work failure");
150         return;
151     }
152     if(x==1){
153         for(int i=1;i<=4;i++){
154             printf("%d yuan coin number=%d\n",mz[i],Tuibi[i]);
155         }
156     }
157     return;
158 }
159 void WorkTuibi(int x){
160     if(sum>=zhangshu[x]*mz[x]){
161         sum-=zhangshu[x]*mz[x];
162         Tuibi[x]=zhangshu[x];
163         zhangshu[x]=0;
164     }
165     else {
166         Tuibi[x]=sum/mz[x];
167         zhangshu[x]-=Tuibi[x];
168         sum-=Tuibi[x]*mz[x];
169     }
170     return;
171 }
172 void WorkC(){
173     if(sum==0) {
174         OutputC(9);
175         return;
176     }
177     for(int i=4;i>=1;i--)
178         WorkTuibi(i);
179     OutputC(1);
180     return;
181 }
182 void InputQ(){
183     c=getchar();
184     c=getchar();
185 //    while(c<'0'||c>'9')c=getchar();
186     int x=0;
187     f=0;
188     while(c>='0'&&c<='9'){
189         f=1;
190         x=x*10+c-'0';
191         c=getchar();
192     }
193     Q=x;
194     return;
195 }
196 void OutputQ(int x){
197     if(x==10){
198         puts("E010:Parameter error");
199         return;
200     }
201     if(x==0){
202         for(int i=1;i<=6;i++){
203             printf("A%d %d %d\n",sp[i].id,SPjia[sp[i].id],sp[i].shu);
204         }
205         return;
206     }
207     if(x==1){
208         for(int i=1;i<=4;i++){
209             printf("%d yuan coin number=%d\n",mz[i],zhangshu[i]);
210         }
211         return;
212     }
213     return;
214 }
215 void WorkQ(){
216     if((Q!=0&&Q!=1)||(!f)){
217         OutputQ(10);
218         return;
219     }
220     if(Q==0){
221         for(int i=1;i<=6;i++){
222             sp[i].id=i;
223             sp[i].shu=SPshu[i];
224         }
225         sort(sp+1,sp+6+1,cmp);
226         OutputQ(0);
227         return;
228     }
229     else{
230         OutputQ(1);
231         return;
232     }
233     return;
234 }
235 void init(){
236     mz[1]=1; mz[2]=2; mz[3]=5; mz[4]=10;
237     SPjia[1]=2;SPjia[2]=3;SPjia[3]=4;
238     SPjia[4]=5;SPjia[5]=8;SPjia[6]=6;
239     cML=getchar();
240     while(cML!=EOF){
241         if(cML=='r'){
242             InputR();
243             OutputR();
244         }
245         if(cML=='p'){
246             InputP();
247             WorkP();
248         }
249         if(cML=='b'){
250             InputB();
251         }
252         if(cML=='c'){
253             c=getchar();
254             WorkC();
255         }
256         if(cML=='q'){
257             InputQ();
258             WorkQ();
259         }
260         cML=getchar();
261     }
262     return;
263 }
264 int main(){
265     init();
266     return 0;
267 }

 到此为止华为机试题库里的“较难”和“困难”题都被我写完了。接下来挑一些中等题写写,如果实在太容易我就去写leetcode hot100,据说挺常考的。

标签:return,int,sum,售货,HJ98,自动,zhangshu,Toubi,mz
From: https://www.cnblogs.com/AlenaNuna/p/18398468

相关文章

  • 自动化提示工程:权威实用指南
    ​了解如何实现快速工程自动化,并显著提高LLM工作量的性能这是关于什么的?欢迎来到雲闪世界。自动提示工程(APE)是一种自动生成和优化大型语言模型(LLM)提示的技术,旨在提高模型在特定任务上的性能。它采用了提示工程的理念,即手动制作和测试各种提示,并自动执行整个过程......
  • 迅为RK3562开发板可应用于人脸跟踪、身体跟踪、视频监控、自动语音识别(ASR)、图像分
    可应用于人脸跟踪、身体跟踪、视频监控、自动语音识别(ASR)、图像分类驾驶员辅助系统(ADAS)、车牌识别、物体识别等。iTOP-3562开发板/核心板采用瑞芯微RK3562处理器,内部集成了四核A53+MaliG52架构,主频2GHZ,内置1TOPSNPU算力,RK809动态调频。支持OpenGLES1.1/2.0/3.2、0penCL2.0、Vu......
  • 【自动驾驶】控制算法(八)横向控制Ⅰ | 算法与流程
    写在前面:......
  • Windows自动化程序开发指南
    自动化程序的概念“自动化程序”指的是通过电脑编程来代替人类手工操作的一类程序或软件。这类程序具有智能性高、应用范围广的优点,但是自动化程序的开发难度大、所用技术杂。本文对自动化程序开发的各个方面进行讲解。常见的处理对象自动化程序要处理的对象,与具体的业务......
  • VScode「配置自动代码格式化C/C++」
    前言        你好,我是小莱,希望输出高质量的内容。        在大厂实习的过程中,我发现很多资深的开发者都习惯自己敲空格,按照公司的代码规范使用标尺来提示自己什么时候该换行。也许这样做可以增加代码编辑时的灵活性,但对于新入职场(用惯了VS)的小白来说,无疑大......
  • 如何使用confluence rest api(wiki自动化),如何解决confluence登录认证问题
    想要使用AtlassianConfluence提供的RESTAPI中的getUser方法来获取用户信息。1.如何使用账号密码登录以下是一个示例Python脚本,演示如何使用该API:importrequestsimportjson#设置ConfluenceAPI的基本URL和登录的用户名密码base_url='https://your-confluence-url/......
  • 第123期 Waymo自动驾驶数据集
    引言亲爱的读者们,您是否在寻找某个特定的数据集,用于研究或项目实践?欢迎您在评论区留言,或者通过公众号私信告诉我,您想要的数据集的类型主题。小编会竭尽全力为您寻找,并在找到后第一时间与您分享。Waymo开放数据集:自动驾驶的未来之路随着科技的飞速发展,自动驾驶技术正逐渐从科幻......
  • 【自动驾驶】控制算法(七)离散规划轨迹的误差计算
    写在前面:......
  • pbootcms去除ueditor编辑器图片自动添加的title和alt属性
    为了去掉UEditor上传图片时自动添加的 title 和 alt 属性,并且将 alt 属性设置为空,可以按照以下步骤进行修改:步骤1:修改 ueditor.all.min.js 文件打开文件:打开文件 \core\extend\ueditor\ueditor.all.min.js。搜索并修改代码:搜索 "imageUrlPrefix",找到以......
  • 京准电钟:NTP授时服务器(授时器)助力工业自动化
    京准电钟:NTP授时服务器(授时器)助力工业自动化京准电钟:NTP授时服务器(授时器)助力工业自动化京准电子科技官微——ahjzsz随着数字网络的不断发展,基于网络协议(IP)的技术不断涌现,因为它足够的方便、灵活和可扩展性。局域网(LANs)、广域网(WANs)以及蜂窝网络都是IP网络应用的常见例子。......