首页 > 拼数
头像 丹323327
发表于 2020-02-05 16:09:27
解题思路 先把整数化成字符串,然后再比较a+b和b+a,如果a+b>b+a,就把a排在b的前面,反之则把a排在b的后面,最后输出排序后的字符串,即可得到最大的整数(如果求最小的整数,则从小到大排序)。 举例说明:a=‘123’,b=‘71’,a+b='12371',b+a=‘71123’,所 展开全文
头像 平凡的小白
发表于 2020-05-29 16:52:51
思路:贪心1.n个整数,字典序最大的在前面,很容易想到这个策略,但是有一组反例:3 31 39结果应该是39331,而不是39313。2.所以我们要改变策略,还是假定AB前面和后面已经有序了,而且AB不影响后面和前面的结果。3.要A排前面更优,就要AB的字典序比BA的字典序大。4.总的策略可以 展开全文
头像 一只羊蝎子
发表于 2021-01-24 11:26:32
容易跳坑的错误思路:将整数按字典序排序,比如把7,13,4,246排序成7,4,246,13,这样乍一看是对的,但多尝试几组数据以后可以发现会有类似98,9或者321,32这样的数据没法得到正确答案。 正确的贪心思路:*假设数字均以字符串储存对于数字a, b, c, d,我们任意改变其中两个相邻数字 展开全文
头像 威风镰鼬
发表于 2021-06-24 20:13:54
思路 这道题数据范围很小,可以直接给字符串排序,大的在前小的在后,然后直接输出就好了。注意如果用strcmp进行字符串大小比较的话,“123”会在"12"之后,所以正确方法应该是s1+s2>s2+s1。 代码 #include<bits/stdc++.h> us 展开全文
头像 19_hanhan
发表于 2020-05-28 15:14:39
题目 题目描述: 设有n个正整数(n ≤ 20),将它们联接成一排,组成一个最大的多位整数。 例如:n=3时,3个整数13,312,343联接成的最大整数为:34331213 又如:n=4时,4个整数7,13,4,246联接成的最大整数为:7424613 输入描述: 第一行,一个正整数n。 展开全文
头像 hahaxixiwx
发表于 2022-01-23 18:24:58
拼数 解题思想 两个字符串要比较拼起来的大小,就直接将两者拼起来a+b或b+a,比较大小 有理论证明,要比较大于三个及三个以上字符串拼起来大小,也只要将两者拼起来大的形式放前面就好(注意并不是把大的放前面eg."433"、"4",“4433”比“4334”大) 代码: #include<bi 展开全文
头像 吃花椒的妙酱
发表于 2021-01-15 14:48:51
//贪心 #include <bits/stdc++.h> using namespace std; string arr[10005];//定义string数组 bool cmp(string a,string b)//通过字符串置换比较,自定义大小比较 { return 展开全文
头像 charlie_03
发表于 2020-12-27 11:20:40
#include <cstdio> #include <string> #include <algorithm> #include <iostream> bool cmp(std::string x, std::string y) { int 展开全文
头像 ziuch
发表于 2020-08-21 16:26:44
题目描述 设有n个正整数(n ≤ 20),将它们联接成一排,组成一个最大的多位整数。 例如:n=3时,3个整数13,312,343联接成的最大整数为:34331213 又如:n=4时,4个整数7,13,4,246联接成的最大整数为:7424613 输 展开全文
头像 2004010207(郭伟业)
发表于 2021-01-13 23:23:39
#include<bits/stdc++.h> using namespace std; int s_i(string s1)///字符串转化为整型 { int i; stringstream ss; ss<<s1; ss>>i; 展开全文