首页 > 代码库 > 阿里笔试编程题——根据商品编号排序(多级排序)

阿里笔试编程题——根据商品编号排序(多级排序)

<style>p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px ".PingFang SC"; color: #454545 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #e4af0a; min-height: 14.0px } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545 } p.p4 { margin: 0.0px 0.0px 2.0px 0.0px; font: 14.0px ".PingFang SC"; color: #454545 } span.s1 { font: 12.0px "Helvetica Neue" } span.s2 { text-decoration: underline } span.s3 { font: 12.0px ".PingFang SC" } span.s4 { font: 14.0px "Helvetica Neue" }</style>

小张和朋友合伙开了一个超市,并向供应商订购了数百种商品准备上架。超市的商品需要分类摆放便于管理。每类商品都有一个8位编码, 其中前三位数字是一级类目,第四位和第五位是英文数字,表示二级类目,后三位是数字 ,表示三级类目。小明用扫码机录入所有商品的信息,要求将商品根据条码信息分门别类按序排列,为商品上架做出指导。

规则为依次按一、二、三级排序。

首先:第一级按数字正序,从小到大,

其次:第二级按字母倒序,从后到前,

最后:第三级按数字倒序,从大到小。

 

编译器版本: gcc 4.8.4

请使用标准输入输出(stdin,stdout) ;请把所有程序写在一个文件里,勿使用已禁用图形、文件、网络、系统相关的头文件和操作,如sys/stat.h , unistd.h , curl/curl.h , process.h

时间限制: 1S (C/C++以外的语言为: 3 S)   内存限制: 128M (C/C++以外的语言为: 640 M)

输入:

数据包含1行: 第一行:所有商品的编码,以逗号(半角)分隔

输出:

排序后的商品条码列表,以逗号(半角)分隔

输入范例:

004HI090,004HI091,004HZ091,004KY026

输出范例:

004KY026,004HZ091,004HI091,004HI090

 

 1 #include <iostream>
 2 #include <stdio.h>
 3 #include <string.h>
 4 #include <string>
 5 #include <stdlib.h>
 6 #include <math.h>
 7 #include <vector>
 8 #include <stack>
 9 using namespace std;
10 
11 typedef struct cate{
12     string a;
13     string b;
14 }cate;
15 
16 bool cmp(cate m, cate n)
17 {
18     if (m.a < n.a) {
19         return true;
20     } else if (m.a == n.a){
21         if (m.b > n.b) {
22             return true;
23         }
24     }
25     return false;
26 }
27 
28 int main()
29 {
30     
31     string str;
32     cate count[100];
33     getline(cin, str);
34     int i = 0;
35     int num = 0;
36     while (1) {
37         if (str[i] == \0) break;
38         if (str[i] == ,) {
39             i++;
40             continue;
41         }
42         count[num].a = str.substr(i, 3);
43         i += 3;
44         count[num].b = str.substr(i, 5);
45         i += 5;
46         num++;
47     }
48     sort(count, count + num, cmp);
49     cout<<"排序后:"<<endl;
50     for (i = 0; i < num; i++) {
51         cout<<count[i].a<<count[i].b<<endl;
52     }
53     return 0;
54 }

 

阿里笔试编程题——根据商品编号排序(多级排序)