首页 > 代码库 > ACM——01排序
ACM——01排序
http://acm.njupt.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=1024
01排序
时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte
总提交:708 测试通过:258
总提交:708 测试通过:258
描述
将01串首先按长度排序,长度相同时,按1的个数多少进行排序,1的个数相同时再按ASCII码值排序。
输入
输入数据中含有一些01串,01串的长度不大于256个字符。
输出
重新排列01串的顺序。使得串按基本描述的方式排序。
样例输入
10011111
00001101
1010101
1
0
1100
样例输出
0
1
1100
1010101
00001101
10011111
题目来源
ZJUT
1 #include<iostream> 2 #include<string> 3 //#include<fstream> 4 #include<vector> 5 using namespace std; 6 class Node 7 { 8 public: 9 string str;10 int len;11 int oneNum;12 Node(string s)13 {14 str = s;15 this->len = str.length();16 int tmp = 0;17 for (size_t i = 0; i<len; i++)18 if (str[i] == ‘1‘) tmp++;19 oneNum = tmp;20 }21 };22 23 int cmp(Node& node1, Node& node2)//-1表示node1排在前面0表示node1和node2相等1表示node1排在node2后面24 {25 if (node1.len<node2.len)26 return -1;27 else if (node1.len>node2.len) return 1;28 else //长度相等29 {30 if (node1.oneNum == node2.oneNum)//一的数目相等31 {32 size_t i;33 for (i = 0; i<node1.len; i++){//比较ASCLL码值34 if (node1.str[i]<node2.str[i]) return -1;35 else if (node1.str[i]>node2.str[i]) return 1;36 }37 if (i == node1.oneNum) return 0;//二者相等38 }39 else if (node1.oneNum<node2.oneNum) return -1;40 else //node1中1的数目比node2的多41 return 1;42 }43 return 0;44 }45 int main()46 {47 //ifstream ifile("D:\\eee.txt");48 string str;49 vector<Node> nVec;50 while (cin>>str)51 {52 Node node(str);53 if (true == nVec.empty())54 nVec.push_back(node);55 else56 {57 vector<Node>::iterator iter = nVec.begin();58 for (iter; iter != nVec.end(); iter++){59 if (cmp(*iter, node) == 1){60 nVec.insert(iter, node);61 break;62 }63 if (cmp(*iter, node) == 0){64 nVec.insert(iter, node);65 break;66 }67 if (cmp(*iter, node) == -1)68 ;69 if (iter == nVec.end()-1){70 //nVec.insert(iter, node);71 nVec.push_back(node);72 break;73 }74 75 }76 77 }78 }79 for (size_t i = 0; i<nVec.size(); i++)80 {81 cout << nVec[i].str << endl;82 }83 return 0;84 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。