。拼数。。

拼数

拼数

题意

有 n 个正整数 a1,a2,a3…an,将它们联接成一排,相邻数字首尾相接,组成一个最大的整数

思路

  1. 需用到sort函数排序和结构体
  2. 以每组的以第一个数字进行排序
  3. 降序排序

坑点

  1. sort函数必须要和函数连用

算法一:结构体+sort函数

实现步骤
  1. 定义一个结构体,输入各项值
  2. 主函数输入
  3. sort函数排序
代码
 #include using namespace std;
struct num{string s;
}p[100];
bool cmp(num a, num b){
    return a.s+b.s>b.s+a.s;
 //a=123,b=456,则a+b=123456
 //b+a=456123
 
}
int main() {
    int n;
    cin>>n;
    for (int i = 0; i < n; ++i) {
        cin>>p[i].s;
    }
    sort(p,p+n,cmp);
    for (int i = 0; i <n ; ++i) {
        cout<<p[i].s;
    }
    return 0;
}
 

算法二:直接用sort排序

代码
 #include
#include
#include
using namespace std;

string a[25];
string temp;
int n;

bool cmp(string x,string y)
{
		return (x + y)  > (y + x);
}

int main(){
	cin >> n;
	for(int i = 1; i <= n; i++)
	{
		cin >> a[i];
	}
	sort(a , a + n, cmp);
	for(int i = 0; i <= n; i++)
	{
		temp = temp + a[i];
	}
	cout << temp;
	return 0;
}
 

总结

结构体需熟练掌握

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