1998 NOIP 拼数 string 和sort的新理解
题目:https://www.luogu.org/problemnew/show/P1012
今天真是长了见识。这道题做了十几分钟,用模拟愣是调不出来。直到我看了题解——(当场去世)……
题的意思是n个数拼出一个最大的数,我竟真的傻傻的输进n个数。。。。。
用string 轻松解决!!!
用sort排列,然后直接从1到n输出,秒AC.....
关键是关于string的加法性质:ac+cd=abcd;
所以把cmp写一下就好了;
上代码,一看全明白!!!
#include<iostream> #include<cstring> #include<cstdio> #include<string> #include<algorithm> using namespace std; int n; string a[50]; bool cmp(string x,string y) { return x+y>y+x; } int main() { scanf("%d",&n); for(int i=1;i<=n;i++) { cin>>a[i]; } sort(a+1,a+n+1,cmp); for(int i=1;i<=n;i++) { cout<<a[i]; } return 0; }