1. 程式人生 > >最小組合數字【貪心+排序】

最小組合數字【貪心+排序】

A - 第一題 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u

Description

給一個N位的正整數,該數不包含前導0,先讓你調整其中每個數字的位置,得到另一個n位的數,並且使得這個數越小越好,而且這個數不能包含前導0。比如543210可以變成102345,而12345保持不變才是最優結果。

Input

第一行一個整數T(T<=100),表示有T組資料。

每組資料先輸入一行一個整數N(1<=N<=100),表示位數,接下來一行輸入一個N位的不包含前導0的正整數。

Output

每組資料對應一行輸出,即調整數字位置後能得到的最小的不包含前導0的數。

Sample Input

3 6 543210 3 123 3 231

Sample Output

102345 123 123

這道題看似複雜,實際用貪心考慮並不複雜,把一串數字重新組合成一個數字,要求數字最小,那麼就肯定要小的數在前,大的數在後,這個只需要排下序就可以了,但是還不夠,因為一個有效的數字,不能以 0 開頭,所以由貪心的思想,我們從最小的開始遍歷,找到不為 0 的數,然後和首位進行交換,得到的一定是最小的數,因為第一位肯定會被換掉,只能換個次小且不為 0 的數,然後處理完之後,輸出字串..... 

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int main()
{
	int t,i,len;
	char x[1005];
	scanf("%d",&t);
	while(t--)
	{
		int tp;
		scanf("%d%s",&len,x);
		sort(x,x+len);//字典序排序
		if(x[0]=='0')//如果前面有零
		{
			i=0;
			while(x[i]=='0')//遍歷查詢不為零的數下標
			{
				++i;
			}
			tp=x[i];x[i]=x[0];x[0]=tp;//交換
		}
		printf("%s\n",x);//輸出字串
	}
	return 0;
}


相關推薦

組合數字貪心+排序

A - 第一題 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Des

排序堆)--演算法導論

堆排序的思想在堆排序(最大堆)已做說明,故不再贅述; 總之,思想就是首先進行建堆,由於這是最小堆,故而必須保證父節點都小於孩子節點,若不滿足條件,則進行調節; 最後進行堆排序,不斷將最小的提取出來,並對剩下的進行調節,使之滿足最小堆; 故而將最大堆中的判斷父節點與孩子大小部

貪心+排序排隊接水 luogu-1223

esp 貪心 人在 puts typedef getchar() 順序 getchar long 題目描述 有n個人在一個水龍頭前排隊接水,假如每個人接水的時間為Ti,請編程找出這n個人排隊的一種順序,使得n個人的平均等待時間最小。 分析 註意要開longlong AC代碼

算法56-----編輯代價動態規劃

狀態 tro 如果 for 字符串 技術 gin 給定 clas 一、題目:最小編輯代價 給定兩個字符串str1和str2,再給定三個整數ic,dc,rc,分別代表插入、刪除、替換一個字符的代價,返回將str1編輯成str2的最小代價。舉例:str1="abc" str

演算法56-----編輯代價動態規劃

一、題目:最小編輯代價 給定兩個字串str1和str2,再給定三個整數ic,dc,rc,分別代表插入、刪除、替換一個字元的代價,返回將str1編輯成str2的最小代價。舉例:str1="abc"   str2="adc"  ic=5    dc=3

poj 2069 Super Star 求覆蓋爬山演算法

題意:給定幾個點,要求覆蓋這些點的最小球半徑。(求到n個點的最大距離最小化的點 因為是單峰的所以可以用爬山演算法 主要是我的退火演算法板子精度達不到?    //#include<bits/stdc++.h> #include <ios

hiho1576 子樹中的權值dfs序

題意:求以x為根的子樹中的最小權值 思路:dfs序,把樹轉化成一個序列,類似LCA中的轉化,記錄1棵子樹進去的時間戳和出去的時間戳。線段樹求區間最小值 #include<stdio.h> #include<iostream> #include&l

51nod-1065 正子段和 貪心 + 思維

記錄 n) 51nod nta cstring pla CA 找到 class N個整數組成的序列a[1],a[2],a[3],…,a[n],從中選出一個子序列(a[i],a[i+1],…a[j]),使這個子序列的和>0,並且這個和是所有和>0的

輸入一組整數,0結束輸入,之後輸出輸入的大的和的整數.思路

cnblogs amp println system ack rgs int 輸入 != package com.ykmimi.new1; /** * 輸入一組整數,0結束輸入,之後輸出輸入的最大的和最小的整數. */ import java.util.Scanner

hdu 3007圓覆蓋-隨機增量法

names cpp dia printf include const n) shu ons #include<iostream> #include<cstdio> #include<cmath> #include<algorithm

割點洛谷P1345

傳送門:https://www.luogu.org/problemnew/show/P1345 最小割問題,大家應該聽說過,最大流最小割吧(沒聽說過的讀完這句話應該聽說了),既然要求最小割,那麼我們就直接dinic跑一下最大流就完事了。 有人要問了,你說的輕巧,我寫了dinic怎麼WA了??

費用流洛谷P2053

傳送門:https://www.luogu.org/problemnew/show/P2053 教練我想學數學建模。 網路流和最小費用流的題目不存在程式碼難度,程式碼不存在變形(目前來說是的,不知道是不是我沒做過對於模板修改的題目) 難度主要在於,你能看出來它是個網路流,並且還能正確的建

劍指offer把陣列排成的數python

題目描述 輸入一個正整數陣列,把數組裡所有數字拼接起來排成一個數,列印能拼接出的所有數字中最小的一個。例如輸入陣列{3,32,321},則打印出這三個數字能排成的最小數字為321323。 思路 使用排序的思想:如果3+321 > 321 + 3那麼說明321應該在3的前面,

代價問題DP

> Description 設有一個n×m(小於100)的方格(如圖所示),在方格中去掉某些點,方格中的數字代表距離(為小於100的數,如果為0表示去掉的點),試找出一條從A(左上角)到B(右下角)的路徑,經過的距離和為最小(此時稱為最小代價),從A出發的

陣列中的第K個大元素 LeetCode 排序

在未排序的陣列中找到第 k 個最大的元素。請注意,你需要找的是陣列排序後的第 k 個最大的元素,而不是第 k 個不同的元素。 示例 1: 輸入: [3,2,1,5,6,4] 和 k = 2輸出: 5 示例 2: 輸入: [3,2,3,1,2,4,5,5,6] 和 k

二乘法

最小二乘法(又稱***最小平方法***)是一種數學優化技術。它通過最小化誤差的平方和尋找資料的最佳函式匹配。利用最小二乘法可以簡便地求得未知的資料,並使得這些求得的資料與實際資料之間誤差的平方和為最小。最小二乘法還可用於曲線擬合。其他一些優化問題也可通過最小化

二分圖大流、獨立集、匈牙利演算法

                                   Asteroids Bessie wants to navigate her spaceship through a dangerous asteroid field in the shape of an N x N grid (1

POJ 2069小球覆蓋 HDU3007圓覆蓋模擬淬火演算法

POJ 2069最小球覆蓋 1.給定N個三維點,要求覆蓋這些點的最小球半徑; 2.採用模擬淬火演算法,隨機選取一個點作為初始解,然後不斷向當前最遠的點靠近; 3.這是一個不斷調整的過程,對應模擬淬火演算法中不斷向內能最低這一目標函式(半徑最小)逼近,溫度對應控制變數 對於一

leetcode:Minimum Depth of Binary Tree(樹的根節點到葉子節點的距離)面試演算法題

題目: Given a binary tree, find its minimum depth. The minimum depth is the number of nodes along the shortest path from the root node d

乘積生成樹詳解BZOJ2395

題意:設每個點有x,y兩個權值,求一棵生成樹,使得sigma(x[i])*sigma(y[i])最小。 設每棵生成樹為座標系上的一個點,sigma(x[i])為橫座標,sigma(y[i])為縱座標。 則問題轉化為求一個點,使得xy=k最小。即,使過這個點的反比例函