直接 sort 不就好了
by kouylty @ 2020-10-18 22:05:04
@[kouylan](/user/123298) 可不可给个代码 我是初学者谢了
by mmlord @ 2020-10-18 23:32:48
有没有大神在呀
by mmlord @ 2020-10-18 23:43:45
```cpp
#include <bits/stdc++.h>
using namespace std;
int n,m,a[100005],ans;
string s;
int main()
{
cin>>n>>s>>m;
n = 0;
for(int i=0;i<s.length();i++)
{
n++; //把扑克牌换成数值
if(s[i]=='1') //注意10
a[n] = 10, i++;
else if(s[i]=='A')
a[n] = 14;
else if(s[i]=='2')
a[n] = 15;
else if(s[i]=='J')
a[n] = 11;
else if(s[i]=='Q')
a[n] = 12;
else if(s[i]=='K')
a[n] = 13;
else if(s[i]>='3' && s[i]<='9')
a[n] = s[i]-'0';
}
sort(a+1,a+1+n); //从小到大排序
for(int i=1;i<=m;i++)
ans += a[n-i+1];
for(int i=m;i>=1;i--)
{
int p=n-i+1; //把数值换成扑克牌
if(a[p]==15)
cout<<'2';
else if(a[p]==14)
cout<<'A';
else if(a[p]==13)
cout<<'K';
else if(a[p]==12)
cout<<'Q';
else if(a[p]==11)
cout<<'J';
else if(a[p]==10)
cout<<"10";
else if(a[p]>=3 && a[p]<=9)
cout<<(char)(a[p]+'0');
}
cout<<' '<<ans<<endl;
return 0;
}
/*
5 5J8102 3
10J2 36
*/
```
by kouylty @ 2020-10-19 18:13:53
@[mmlord](/user/395490) 注意 10 的转化(包含两个字符)。
程序最后有一组数据。
by kouylty @ 2020-10-19 18:15:03