牛客算法竞赛入门课第一节习题——拼数

牛客算法竞赛入门课第一节习题——拼数_第1张图片

题目大意:将n个正整数“合并”,形成一个最大的数
考察的知识点:排序相关
题解思路:

  • 将正整数转换为字符串
  • 如果a+b>b+a 这保持原顺序不变,否则调换顺序(也就是说b在前大于a在前调换顺序,否则保持)
    eg:2个正整数13 415,转换为字符串,其中a=13.b=415 ;a+b=13415
void sort( iterator start, iterator end, StrictWeakOrdering cmp )//函数原型:从小到大排序
bool cmp(int a,int b)
{
	return a<b
}

AC代码

#include
#include 
using namespace std;
bool cmp(string a,string b)
{
	return a+b>b+a;
} 
int main(void)
{
	int n;
	cin>>n;
	string s[n];
	for(int i=0;i<n;i++)
	{
		cin>>s[i];//将输入的正整数转换成为字符数组 
	}
	
	sort(s,s+n,cmp);//Sort函数,如果cmp为真,持原来顺序,否则调换原顺序
	for(int i=0;i<n;i++)
	{
		cout<<s[i];
	 } 
	return 0;
}
 

你可能感兴趣的:(算法)