标签:mod name ace 输入 整数 stream 打印 iter append
2345656
//方法一
#include <iostream>
#include<string>
#include<vector>
#include<cstdlib>
#include<algorithm>
using namespace std;
/*
*字符串比較,长度同样直接比較
*长度不同一时候,先比較长度同样的部分,若长度同样的部分不同样,则直接进行比較就可以;
*长度同样的部分同样的,再将长字符串的剩下的部分与短字符串比較;
*另外,排序函数的使用须要注意到地方还有非常多,qsort(str,0,str+n,cmp);非常美丽的使用方法。而用容器则直接用begin(),end()函数替代
*cmp比較函数的设计。注意返回值为int类型
*字符串的比較。用标准模板库里面的函数真的是相当方便。各种函数用的好了非常方便。用的不好,错误一堆
*/
bool cmp(string str1,string str2)
{
int flag;
bool isBig;
int len1=str1.length(),len2=str2.length();
if(len1==len2)
flag=str1.compare(str2);
else
{
if(len1<len2)
{
if(str2.compare(0,len1,str1)==0)
{
isBig=cmp(str1,str2.substr(len1,len2-len1));
if(isBig)
return true;
else
return false;
}
else
flag= str1.compare(str2);
}
else
{
if(str1.compare(0,len2,str2)==0)
{
isBig=cmp(str1.substr(len2,len1-len2),str2);
if(isBig)
return true;
else
return false;
}
else
flag= str1.compare(str2);
}
}
if(flag==1)
return false;
else
return true;
}
/*
*整体思路:为了便于比較输入的数中的各位数字的大小。首先将输入的数字当成字符串输入;
*输入结束后,将字符串按题目要求的规则进行排序。具体排序规则详见比較函数;
*最后,将排序好的字符串直接输出就是所要求的数字,然后输出;
*bingo!
*/
int main()
{
int n;
while(cin>>n)
{
string str;
vector<string>vec;
for(int i=0;i<n;i++)
{
cin>>str;
vec.push_back(str);
}
sort(vec.begin(),vec.end(),cmp);
vector<string>::iterator iter=vec.begin();
for(;iter!=vec.end();iter++)
{
cout<<*iter;
}
cout<<endl;
}
return 0;
}
/**************************************************************
Problem: 1504
User: hndxztf
Language: C++
Result: Accepted
Time:170 ms
Memory:1528 kb
****************************************************************/
#include <iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
/*
*首先将字符串进行拼接。再直接比較字符串
*拼接后避免出现321>32>3的情况。那样就成了332321了
*/
bool cmp(string str1,string str2)
{
string temp1=str1,temp2=str2;
temp1.append(str2);
temp2.append(str1);
return temp1<temp2;
}
/*
*整体思路:为了便于比較输入的数中的各位数字的大小,首先将输入的数字当成字符串输入。
*输入结束后,将字符串按题目要求的规则进行排序,具体排序规则详见比較函数;
*最后。将排序好的字符串直接输出就是所要求的数字,然后输出;
*bingo!
*/
int main()
{
int n;
while(cin>>n)
{
string str;
vector<string>vec;
for(int i=0;i<n;i++)
{
cin>>str;
vec.push_back(str);
}
sort(vec.begin(),vec.end(),cmp);
vector<string>::iterator iter=vec.begin();
for(;iter!=vec.end();iter++)
{
cout<<*iter;
}
cout<<endl;
}
return 0;
}
/**************************************************************
Problem: 1504
User: hndxztf
Language: C++
Result: Accepted
Time:250 ms
Memory:1528 kb
****************************************************************/标签:mod name ace 输入 整数 stream 打印 iter append
原文地址:http://www.cnblogs.com/yfceshi/p/7200341.html