竞赛
考级
——————————【防透视】—————————————- ———————————————————————————— (题外话)大家年过得好么? ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 题目描述 从所给字符串中找到所有数字,并拼成最大的正整数 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 思路 利用sort函数,倒序输出 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ AC代码 点赞,一键三连
不要抄袭
总共就10个数字,定义一个cnt数组,存好每个数字有的数量,从大到小输出就好了,无需sort,节省时间
题意 给定一个包含小写字母和数字的字符串 sss,要求从小写字母及数字的字符串 sss 中选出任意多个数字 ,并按任意顺序将它们拼接成一个正整数。每个数字只能使用一次。求出所有能拼成的正整数中的最大值。 1≤∣s∣≤1061 \le|s|\le10^61≤∣s∣≤106 解析: 以发现,最终数字的最高位越大,这个数就越大,因而只需挑出字符串中的所有数字,再按大小降序排序即可。 答案:
[CSP-J 2025]T1拼数题解 题意解答: 这题我认为比19年的第一题简单,不过也属于CSP-J的T1中的简单档,这题简单来说就是将输入的字符串中的数字组装出最大的数字 思路&代码: 本体思路有很多,我能想出2种 1.桶标记数组: 就是创建一个大小为10的数组,在输入后统计每个数字字符的数量,遇到数字字符就将它的数量+1 代码如下 2.按照字符串输出 对输入的字符串进行从大到小的排序,因为ASCII码值,数字会排到后面,所以要创建一个标志即已经进入数字区域,如果进入就输出,代码如下
#include <bits/stdc++.h> using namespace std; string s; int main(){ cin>>s; s=regex_replace(s,regex("\D"),"");// 用正则 \D(非数字)匹配所有非数字字符,替换为空串 sort(s.begin(),s.end(),greater<char>());//从大到小排序 cout<<s; }
提交答案之后,这里将显示提交结果~