阿里笔试编程题——根据商品编号排序(多级排序)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了阿里笔试编程题——根据商品编号排序(多级排序)相关的知识,希望对你有一定的参考价值。
小张和朋友合伙开了一个超市,并向供应商订购了数百种商品准备上架。超市的商品需要分类摆放便于管理。每类商品都有一个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 }
以上是关于阿里笔试编程题——根据商品编号排序(多级排序)的主要内容,如果未能解决你的问题,请参考以下文章