C++/PTA 组最大数

这篇具有很好参考价值的文章主要介绍了C++/PTA 组最大数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目要求

设有n个正整数,将他们连接成一排,组成一个最大的多位整数。

如:n=3时,3个整数13,312,343连成的最大整数为34331213。

如:n=4时,4个整数7,13,4,246连接成的最大整数为7424613。
输入格式:

有多组测试样例,每组测试样例包含两行,第一行为一个整数N(N<=100),第二行包含N个数(每个数不超过1000,空格分开)。
输出格式:

每组数据输出一个表示最大的整数。

输入样例:
2
12 123
4
7 13 4 246

输出样例:
12312
7424613

解题思路

  1. 将输入的数字转换成字符串
  2. 按照自定义的排序规则(即两个字符串拼接成的数之间的大小关系)进行排序
  3. 将排好序的字符串依次拼接起来就可以得到最大的多位整数。具体实现中使用了 STL 中的 vector 容器和 sort 函数。

代码

#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
using namespace std;
vector<string> v;
bool cmp1(string a, string b) {
	string tmp1 = a + b;
	string tmp2 = b + a;
	return tmp1 > tmp2;
}
int main(){
    int ans;
    while(scanf("%d",&ans)==1){
        v.clear();
        for(int i=0;i<ans;i++){
            string temp;
            cin>>temp;
            v.push_back(temp);  
        }
        sort(v.begin(),v.end(),cmp1);
        for(auto it=v.begin();it!=v.end();it++){
            cout<<*it;
        }
        cout<<endl;
    }
}

  • 在程序的主循环中,先使用 vector 容器存储输入的字符串
  • 然后将容器中的元素按照 cmp1 函数定义的顺序进行排序
  • 最后再按顺序将所有排序后的字符串拼接起来即可得到答案,并在每次输出结束后换行

头文件

algorithm 头文件提供了一系列常用的算法函数,如排序、查找、计数等。在这个程序中,使用了 sort 函数。

vector 容器用于存储字符串。vector 是一个动态数组,可以随时动态增加或缩减容量。
在这个程序中,使用 vector 存储输入的字符串,并在最后将排序好的字符串依次输出。

string.h 头文件提供了字符串操作的各种函数,如 strlen、 strcpy、 strcat 等。
在这个程序中,使用了 C++ 的字符串类,它封装了各种字符串操作和提供了更多的方法和功能。

vector函数

vector 是 C++ 标准库中的一个容器,可以看作是一个动态数组,能够存储不同类型的数据。以下是 vector 的常用函数语法:

  1. vector<T> v;:定义一个空的 vector,其中 T 是 vector 中存储元素的类型。

  2. vector<T> v(n);:定义一个长度为 n 的 vector,其中所有元素都初始化为默认值。

  3. vector<T> v(n, val);:定义一个长度为 n 的 vector,其中所有元素都初始化为 val。

  4. vector<T> v1(v2);:使用 vector v2 初始化一个新的 vector v1。

  5. v.empty():返回 true 如果 vector 为空。

  6. v.size():返回 vector 中元素的个数。

  7. v.clear():删除 vector 中的所有元素。

  8. v.push_back(val):在 vector 的末尾添加一个元素 val。

  9. v.pop_back():删除 vector 的最后一个元素。

  10. v.front():访问 vector 的第一个元素。

  11. v.back():访问 vector 的最后一个元素。

  12. v.begin()v.end():返回指向 vector 第一个和最后一个元素的迭代器。

  13. v.insert(pos, val):在 pos 位置前插入元素 val。

  14. v.erase(pos):删除 pos 指向的元素。

  15. v.erase(start_pos, end_pos):删除从 start_pos 到 end_pos 之间的元素。

  16. v.resize(n):将 vector 的长度调整为 n。

  17. v.reserve(n):预留至少能容纳 n 个元素的存储空间。

这里只列出了一部分常用函数,更多详细信息可以查看 C++ 标准库的文档。

总结

本文基于vector函数进行解题,读者可自行实践。
我是秋说,我们下次见。文章来源地址https://www.toymoban.com/news/detail-449369.html

到了这里,关于C++/PTA 组最大数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • PTA L1-025 正整数A+B(详解)

    前言:本期是关于正整数A+B的详解,内容包括四大模块:题目,代码实现,大致思路,代码解读,今天你c了吗?   题的目标很简单,就是求两个正整数 A 和 B 的和,其中 A 和 B 都在区间[1,1000]。稍微有点麻烦的是,输入并不保证是两个正整数。 输入格式: 输入在一行给出

    2023年04月21日
    浏览(29)
  • C++/PTA 组最大数

    设有n个正整数,将他们连接成一排,组成一个最大的多位整数。 如:n=3时,3个整数13,312,343连成的最大整数为34331213。 如:n=4时,4个整数7,13,4,246连接成的最大整数为7424613。 输入格式: 有多组测试样例,每组测试样例包含两行,第一行为一个整数N(N=100),第二行包含N个数(每

    2024年02月05日
    浏览(34)
  • 浙大版PTA《Python 程序设计》题目集 参考答案

    本答案配套详解教程专栏,欢迎订阅: PTA浙大版《Python 程序设计》题目集 详解教程_少侠PSY的博客-CSDN博客

    2024年02月08日
    浏览(47)
  • 【PTA题目】7-11 求矩阵的局部极大值 分数 15

    7-11 求矩阵的局部极大值 分数 15 全屏浏览题目 切换布局 作者 徐镜春 单位 浙江大学 给定M行N列的整数矩阵A,如果A的非边界元素A[i][j]大于相邻的上下左右4个元素,那么就称元素A[i][j]是矩阵的局部极大值。本题要求给定矩阵的全部局部极大值及其所在的位置。 输入格式:

    2024年02月04日
    浏览(36)
  • PTA(C语言)本题要求编写程序,求一个给定的m×n矩阵各行元素之和。

    本题要求编写程序,求一个给定的m×n矩阵各行元素之和。 输入格式: 输入第一行给出两个正整数m和n(1≤m,n≤6)。随后m行,每行给出n个整数,其间 以空格分隔。 输出格式: 每行输出对应矩阵行元素之和。 输入样例: 输出样例:  

    2024年02月03日
    浏览(33)
  • PTA(浙大版《C语言程序设计(第3版)》题目集

    学习C语言程序设计的PTA题目 本题要求编写程序,计算4个整数的和与平均值。题目保证输入与输出均在整型范围内。 输入格式: 输入在一行中给出4个整数,其间以空格分隔。 输出格式: 在一行中按照格式“Sum = 和; Average = 平均值”顺序输出和与平均值,其中平均值精确到小数

    2024年01月18日
    浏览(41)
  • 【全解析 | PTA】浙大版《Python 程序设计》题目集-第三章

    一、判断题 1.\\\'age\\\'+23不是正确的表达式。T 2 . 列表可以用find()函数来搜索数据是否在列表中。F         find()函数是字符串处理函数;Python find() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果包含子

    2024年04月15日
    浏览(49)
  • 【全解析 | PTA】浙大版《Python 程序设计》题目集-第二章

    一、判断题 1. 输入正整数6和5,要求和,6+66+666+6666+66666,下面程序正确吗? F     a=int(input())        n=int(input())        print(sum([int(\\\'a\\\'*i) for i in range(1,n+1)]))         在代码中,使用了字符串 ‘a’ 而不是变量 a 的值是因为字符串 ‘a’ 在引号内被视为文本常量,而不是变

    2024年03月12日
    浏览(218)
  • PTA 7-18 求矩阵中的最大小值

    输入一个n×m的整数矩阵(n=10,m=10),然后输出其中的最大值、最小值,并输出这两个值的下标。 输入格式: 输入矩阵的行数n和列数m(n=10,m=10),然后输入所有矩阵中的数据。 输出格式: 第一行输出n×m的数组中的最大值及其下标。每两项之间一个空格。 第二行输出n×m的数组中的最

    2024年02月04日
    浏览(29)
  • Java——它要求用户输入一个整数(实际上是一个字符串),然后计算该整数的平方值,并将结果输出。

    这是一个Java程序,它要求用户输入一个整数(实际上是一个字符串),然后计算该整数的平方值,并将结果输出。程序的基本流程如下: 首先,声明并初始化变量data和result,它们的初始值都为0。 然后,输出提示信息,要求用户输入一个整数。 接下来,使用BufferedReader类从

    2024年02月11日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包