online_judge_1090
2015-12-14 19:20
323 查看
这个题目说来真是惭愧。完全看上交大牛写的代码仿写。。这个思想真是太好了。敬佩,,同时鄙视自己……
#include <iostream> #include <string> #include <algorithm> #include <vector> using namespace std; bool comp(string a, string b) { int len = a.size() > b.size() ? b.size() : a.size(); for(int i=0; i<len; ++i) { if(a[i] != b[i]) { if(a[i] != '\\' && b[i] != '\\') return a[i] < b[i]; else if(a[i] == '\\') return true; else if(b[i] == '\\') return false; } } return a.size() < b.size(); } int main() { int n; int i,j,index; string str; vector<string> vstr; while(cin>>n) { if(n == 0) break; vstr.clear(); for(i=0; i<n; ++i) { cin>>str; if(str[str.size()-1] == '\\') str.erase(str.size()-1, str.size()); if(find(vstr.begin(), vstr.end(), str) == vstr.end()) vstr.push_back(str); while(str.find('\\') != string::npos) { str.erase(str.find_last_of('\\', str.size())); if(find(vstr.begin(), vstr.end(), str) == vstr.end()) vstr.push_back(str); } } sort(vstr.begin(), vstr.end(), comp); for(unsigned int i=0; i<vstr.size(); ++i) { if(vstr[i].find('\\') == string::npos) cout<<vstr[i]<<endl; else { index = vstr[i].find_last_of('\\'); for(j=0; j<=index; ++j) cout<<" "; cout<<vstr[i].substr(index+1, vstr[i].size())<<endl; } } cout<<endl; } return 0; }
相关文章推荐
- 杭电 2045
- 在微信源代码共享仿乐趣, 把你的业务微信
- Tomcat(免安装版)环境变量及基本配置
- 将一个文件转换成C语言数组
- openjudge 小游戏
- UVa 572 Oil Deposits(DFS)
- [AngularJS] Services, Factories, and Providers -- value & Providers
- STM32 ucLinux环境搭建
- 基于Emma的独立测试用例代码覆盖率统计
- margin-bottom与bottom不同
- UNIX网络编程卷1 server编程范式0 迭代server
- MATLAB GUI程序设计中使文本框接收多行输入的方法
- 【iCore3 双核心板】例程十三:SDIO实验——读取SD卡信息
- 第八周项目2 建立链串的算法库
- xcode7打包生成ipa包
- mscomm缺失、注册问题
- POJ_P1511 Invitation Cards(单源最短路+SPFA)
- 从netty-example分析Netty组件
- 开脑洞学编程之面向对象
- EasyUI 多行动态选择性合并算法实现