c语言 求助一道题

题目总版

直接 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


|