【九度】题目1504:把数组排成最小的数
来源:互联网 发布:画几何图形软件 编辑:程序博客网 时间:2024/05/22 08:04
题目1504:把数组排成最小的数
时间限制:1 秒内存限制:128 兆特殊判题:否提交:862解决:255
题目描述:
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
输入:
输入可能包含多个测试样例。
对于每个测试案例,输入的第一行为一个整数m (1<=m <=100)代表输入的正整数的个数。
输入的第二行包括m个正整数,其中每个正整数不超过10000000。
输出:
对应每个测试案例,
输出m个数字能排成的最小数字。
样例输入:
3
23 13 6
2
23456 56
样例输出:
13236
2345656
【解题思路】
这个问题很经典,其实就是将排序规则重新定义了一下。
具体来说,是这样的,假设有两个字符串a,b(数字可以转为字符串),如果拼接好的字符串ab<ba,那么认为a<b。
时间限制:1 秒内存限制:128 兆特殊判题:否提交:862解决:255
题目描述:
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
输入:
输入可能包含多个测试样例。
对于每个测试案例,输入的第一行为一个整数m (1<=m <=100)代表输入的正整数的个数。
输入的第二行包括m个正整数,其中每个正整数不超过10000000。
输出:
对应每个测试案例,
输出m个数字能排成的最小数字。
样例输入:
3
23 13 6
2
23456 56
样例输出:
13236
2345656
【解题思路】
这个问题很经典,其实就是将排序规则重新定义了一下。
具体来说,是这样的,假设有两个字符串a,b(数字可以转为字符串),如果拼接好的字符串ab<ba,那么认为a<b。
Java AC
import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.StreamTokenizer;import java.util.Arrays;import java.util.Comparator; public class Main { /* * 2014年5月15日14:26:30 */ public static void main(String[] args) throws Exception { StreamTokenizer st = new StreamTokenizer(new BufferedReader( new InputStreamReader(System.in))); while (st.nextToken() != StreamTokenizer.TT_EOF) { int n = (int) st.nval; Integer array[] = new Integer[n]; for (int i = 0; i < n; i++) { st.nextToken(); array[i] = (int) st.nval; } StrSort strSort = new StrSort(); Arrays.sort(array, strSort); StringBuilder sb = new StringBuilder(); for (int i = 0; i < n; i++) { sb.append(array[i]); } System.out.println(sb); } }} class StrSort implements Comparator<Integer> { public int compare(Integer o1, Integer o2) { String numStr1 = o1 + "" + o2; String numStr2 = o2 + "" + o1; return numStr1.compareTo(numStr2); }}/************************************************************** Problem: 1504 User: wangzhenqing Language: Java Result: Accepted Time:1960 ms Memory:149288 kb****************************************************************/C++ AC
#include<stdio.h>#include<algorithm>#include<string.h>using namespace std;const int maxn = 102; int n, i; struct Node{ char num[20];}nodes[102]; bool cmp(Node node1,Node node2){ char c[20]; strcpy(c,node1.num); strcat(node1.num,node2.num); strcat(node2.num,c); return strcmp(node1.num,node2.num) < 0; } int main(){ int n; while(scanf("%d",&n)!=EOF){ for(i = 0; i < n; i++){ scanf("%s",nodes[i].num); } sort(nodes,nodes+n,cmp); for(i = 0; i < n; i++){ printf("%s",nodes[i].num); } printf("\n"); } return 0;} /************************************************************** Problem: 1504 User: wangzhenqing Language: C++ Result: Accepted Time:80 ms Memory:1028 kb****************************************************************/
0 0
- 【九度】题目1504:把数组排成最小的数
- 九度 题目1504:把数组排成最小的数
- 【剑指Offer面试编程题】题目1504:把数组排成最小的数--九度OJ
- 九度OJ-题目1504:把数组排成最小的数
- 九度《剑指offer》把数组排成最小的数
- 题目1504:把数组排成最小的数
- 题目1504:把数组排成最小的数
- 题目1504:把数组排成最小的数-PAT
- 题目1504:把数组排成最小的数
- 题目1504:把数组排成最小的数
- 题目1504:把数组排成最小的数
- 题目1504:把数组排成最小的数
- 题目1504:把数组排成最小的数
- 九度oj 1504:把数组排成最小的数 (贪心)
- 九度OJ 1504 把数组排成最小的数【算法】-- 2009年百度面试题
- 【OJ题目】把数组排成最小的数
- 算法题目---把数组排成最小的数
- 剑指offer面试题目:把数组排成最小的数
- shell cp命令参数详解
- C# 控件上画线无法显示问题
- ubuntu 12.04 桌面版 dhcp server 配置过程
- DataGridView右键弹出菜单
- myeclipse2013 jsp编辑初始化
- 【九度】题目1504:把数组排成最小的数
- Fruit Ninja - HUD 4000 树状数组
- uboot中nand flash代码分析(3)
- Combination Sum II
- log4j.properties配置详解
- flume工作记录
- mysql 查看一个表占用的空间
- -3+1
- 内核 iptables 表 链 介绍