3530. 和你在一起

Patchouli

测试用例有问题,举个例子

3
78 71 7
根据AC代码跑出来的结果是78717,而很明显,答案应该是78771
希望可以增加这些测点吧

LzQuarter
#include<iostream>
#include<algorithm>
using namespace std;
int fun(string a, string b){
    if(a.length() == b.length()){
        //do nothing
    }
    else if(a.length() > b.length()){
        int dlen = a.length() - b.length();
        for(int i = 0; i < dlen; i++){
            b += a[i];
        }
    }
    else{
        int dlen = b.length() - a.length();
        for(int i = 0; i < dlen; i++){
            a += b[i];
        }
    }
    return a > b;
}
int main(){
    int n;
    string arr[30];
    cin >> n;
    for(int i = 0; i < n; i++){
        cin >> arr[i];
    }
    sort(arr, arr + n, fun);
    for(int i = 0; i < n; i++){
        cout << arr[i];
    }
    return 0;
}
Akaricyan

这是正解!
2
492 49
问题在于这种例子。

Deuchie

这是一道经典的字符串题,虽然是以数字样式给出的。

首先,我们来观察只有两个字符串 的情形。因为 的长度可能不相同,根据分析我们可以看出应该这样比较:



可见正确的比较姿势是把两个字符串续起来再比较。

然后观察有更多的字符串的情形。假设我们有 个字符串的集合 ,那么 。这个 应该被放在第一位,因为如果有另一个字符串 被放在第一位,那么一定可以在第二从位放 且使得 ,不能满足需求。

综上,我们发现只要用「把两个字符串加进来比较」的方法把字符串排序就好了。如果是直接比较,可能会出错。这个前面的大佬们已经解释并举反例啦!

下面是程序:

#include <algorithm>
#include <iostream>
#include <string>

using namespace std;

int main() {
    int n;
    cin.tie(0);
    ios::sync_with_stdio(0);
    cin >> n;
    string *nums = new string[n], *ed = nums + n;
    for (string *i = nums; i != ed; ++i)
        cin >> *i;
    sort(nums, ed, [](string &a, string &b) { return b + a < a + b; });
    for (string *i = nums; i != ed; ++i)
        cout << *i;
    cout << '\n';
}
Deuchie

EOJ 的 Markdown 也太丑了

PGFIVE5
n = int(input())
x=list(input().split())
x.sort(reverse=True)
for m in x:
    print(m,end='')

这样都能AC是不是说明数据有问题

告白于荆州

测试样例似乎并没有考虑全面,这道题肯定不是简单的排序再输出

柴柴柴拆柴柴

水题

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<string.h>

struct num{
    int mynum;
};
typedef struct num NUM;

int mycoup(const void * p1,const void * p2);
int min(int a,int b);

int main(void)
{
    int cases,i;
    NUM *inputlst;

    scanf("%d",&cases);
    inputlst=(NUM*)malloc(cases*sizeof(NUM));

    for(i=0;i<cases;i++)
        scanf("%d",&inputlst[i].mynum);

    qsort(inputlst,cases,sizeof(NUM),mycoup);
    for(i=0;i<cases;i++)
    {
        printf("%d",inputlst[i].mynum);
        if(i==cases-1)
            printf("\n");
    }

    free(inputlst);
    return 0;
}

int mycoup(const void * p1,const void * p2)
{
    const NUM * a1=(const NUM *)p1;
    const NUM * a2=(const NUM *)p2;
    char temp1[10001],temp2[10001];
    int i,len1,len2;

    sprintf(temp1,"%d",a1->mynum);
    sprintf(temp2,"%d",a2->mynum);

    len1=strlen(temp1);
    len2=strlen(temp2);

    for(i=0;i<min(len1,len2);i++)
    {
        if(temp1[i]>temp2[i])
            return -1;
        else if(temp1[i]<temp2[i])
            return 1;
    }
    return 0;
}

int min(int a,int b)
{
    if(a<b)
        return a;
    else
        return b;
}
xhliao

include

include

include

using namespace std;
typedef struct{
char num[10];
}ST;
ST s[20];

bool cmp(ST a,ST b){
return strcmp(a.num,b.num)>0;
}

int main(){
int n,i;
cin>>n;
for(i=0; i>s[i].num;
}
sort(s,s+n,cmp);
for(i=0; i<n; i++){
cout<<s[i].num;
}
return 0;
}

万古星空悬皓月

input()
print(‘’.join(sorted(input().split(‘ ‘), reverse=True)))
可耻不= =

liupeng19970119

include

using namespace std;
int main()
{
int n;
int a[20] = {};
int b[20] = {};
int c[20] = {};
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> a[i];
}
for (int i = 0; i < n; i++)
{
if (a[i] >1000){ b[i] = a[i] / 1000; }
else if (a[i] >100 && a[i] < 1000)
{
b[i] = a[i] / 100;
}

    else if (a[i] &gt;= 10 &amp;&amp; a[i] &lt;= 100)
    {
        b[i] = a[i] / 10;
    }
    else
        b[i] = a[i] % 10;
}
int temp;
for (int i = 0; i &lt; n; i++)
{
    for (int j = i; j &lt; n; j++)
    {
        if (b[j]&gt;b[i])
        { 
            temp = b[i]; b[i] = b[j]; b[j] = temp;
            temp = a[i]; a[i] = a[j]; a[j] = temp;
        }
        if (b[j]==b[i])
        {
            if (a[j]&lt;10)
            {
                temp = b[i]; b[i] = b[j]; b[j] = temp;
                temp = a[i]; a[i] = a[j]; a[j] = temp;
            }
            if (a[j]&gt;100 &amp;&amp; a[j] &lt; 1000)
            {
                if (a[i]&gt;1000){
                    if (a[j] &gt; (a[i] / 10))
                    {
                        temp = b[i]; b[i] = b[j]; b[j] = temp;
                        temp = a[i]; a[i] = a[j]; a[j] = temp;
                    }

                }
            }
            if (a[i]&gt;100 &amp;&amp; a[i] &lt; 1000)
            {
                if (a[j]&gt;1000){
                    if (a[j] / 10 &gt; (a[i]))
                    {
                        temp = b[i]; b[i] = b[j]; b[j] = temp;
                        temp = a[i]; a[i] = a[j]; a[j] = temp;
                    }

                }
            }
            if ((a[j] &gt; 1000 &amp;&amp; a[i] &gt; 1000) ||( (a[j] &lt; 1000 &amp;&amp; a[j]&gt;100) &amp;&amp; (a[i] &lt; 1000 &amp;&amp; a[i]&gt;100)))
            {
                if (a[j]&gt;a[i])
                {
                    temp = b[i]; b[i] = b[j]; b[j] = temp;
                    temp = a[i]; a[i] = a[j]; a[j] = temp;
                }
            }
        }

    }
    c[i] = a[i];
}
for (int i = 0; i &lt; n; i++){ cout &lt;&lt; c[i]; }

}

你当前正在回复 博客/题目
存在问题!