1. 程式人生 > >字典序最小問題(貪心)

字典序最小問題(貪心)

#include <bits/stdc++.h>
using namespace std;
const int MAX_N = 2000;
/*
給定長度為N的字元竄S,要構造一個長度為N的字串T。起初,T是一個空串,隨後反覆
進行下列任何操作。
1.從S的頭部刪除一個字串,加到T的尾部
2.從S的尾部刪除一個字串,加到T的尾部
目標是要構造字典序儘可能小的字串T。
限制條件:
1 ≤N ≤2000
字串S只包含大寫英文字母
輸入:
N = 6
S = "ACDBCB"
輸出:
ABCBCD(如下圖所示進行操作) 

S="ACDBCB"  ==>(開頭)  S="CDBCB" ==>(末尾)  S="CDBC"  ==>(末尾)  S="CDB"
T=""				   T="A"				T="AB"				 T="ABC"

==>(末尾) S="CD"	==>(開頭)	S="D"		==>(開頭)   S=""
		  T="ABCB"				T="ABCBC"				T="ABCBCD"

*/

int n;
char S[MAX_N + 1];

void solve()
{
	int a = 0, b = n - 1;
	while (a <= b)
	{
		bool left = false;
		for (int i = 0; a + i <= b; ++i)
		{
			if (S[a + i] < S[b - i])
			{
				left = true;
				break;
			}
			else if (S[a + i] > S[b - i]) // 如果相等,就進行下一輪迴圈,往內靠攏繼續比較 
			{// 如果左邊小,從開頭開始取,反之從末尾開始取 
				left = false;
				break;
			}
		}
		if (left)	putchar(S[a++]);
		else	putchar(S[b--]);
	}
}


int main()
{
	scanf("%d%*c", &n);
	gets(S);
	solve();
	return 0;
}
========================================Talk is cheap, show me the code=======================================

相關推薦

簡單貪心演算法——字典問題(Best Cow Line POJ3617)

題目連線 Best Cow Line POJ3617 題目描述 FJ is about to take his N (1 ≤ N ≤ 2,000) cows to the annual"Farmer of the Year" competition. In this

字典問題(貪心)

#include <bits/stdc++.h> using namespace std; const int MAX_N = 2000; /* 給定長度為N的字元竄S,要構造一個長度為N的

51nod 1255 字典的子序列【貪心

給出一個由a-z組成的字串S,求他的一個子序列,滿足如下條件: 1、包含字串中所有出現過的字元各1個。 2、是所有滿足條件1的串中,字典序最小的。 例如:babbdcc,出現過的字元為:abcd,而包含abcd的所有子序列中,字典序最小的為abdc。

貪心算法----字典問題

== class 分析 build 文字 bst stringbu 技巧 end 題目:   字典序最小問題,給一個定長為N的字符串S,構造一個字符串T,長度也為N。起初,T是一個空串,隨後反復進行下列任意操作:1. 從S的頭部刪除一個字符,加到T的尾部 2. 從S的尾部

練習題 No.4 字典問題(貪心法)

要求 給定長度為N的字串S,要構造一個長度為N的字串T。起初,T是一個空串,隨後反覆進行下列任意操作。 1. 從S的頭部刪除一個字元,加到T的尾部。 2. 從S的尾部刪除一個字元,加到T的尾部

字典問題

字典排序 cal letter 排序 ica ogr lee let 漢字 先給出一個字典序的定義: 字典排序(lexicographical order)是一種對於隨機變量形成序列的排序方法。其方法是,按照字母順序,或者數字小大順序,由小到大的形成序列。 比如說有一個隨機

HDU 1385 Floyd+列印字典路徑

Problem Description These are N cities in Spring country. Between each pair of cities there may be one transportation track or none. Now there is so

拓撲排序(字典字典

E. Minimal Labels 題意: 給出 m 條有向邊,組成有向無環圖,輸出一個 1 到 n 組成的排列,每個數只能出現一次,表示每個點的標號。如果有邊 (u,v)(u,v) 那麼 labelu<labelvlabelu<labelv 。要求最後

p1242 字典的拓撲

題目 描述 Description 給定一個有N個節點的有向圖(編號為0~N-1),求其拓撲排序的最小字典序。 輸入格式 Input Format 第一行兩個整數 N和M,表示圖有N個點,M條邊。 接下來M行,2個整數ui和vi,表示ui到vi有條有向邊。 輸出格式 Output

HDU 1385 Minimum Transport Cost (輸出字典路徑)【短路】

<題目連結> 題目大意:給你一張圖,有n個點,每個點都有需要繳的稅,兩個直接相連點之間的道路也有需要花費的費用。現在進行多次詢問,給定起點和終點,輸出給定起點和終點之間最少花費是多少,並且輸出最少花費所走的路徑,如果有多條路徑花費最少,則輸出字典序最小的那條。 解題分析: 輸出最短路的路徑問

題目序號配給 字典的拓撲排序

來源:長沙理工大學2018區域賽個人選拔賽1 題目: 描述: 在一種競賽中,題目往往是成套出現的。一道基礎題,稍加改動就會使難度上升幾個檔次。 現在有n道題目,編號為1~n;給出了m個二元組,每個二元組&

字典問題 (POJ3617)

給定一個長度為N的字串S,要構建一個長度為N的字串T。起初T是一個空的字串,隨後重複進行一下任意操作; 從S的頭刪除一個字元新增到T的尾部 從S的尾部刪除一個字元新增到T的尾部 目的: 使得T的字典序儘可能小 *字典序字典序是從前到後比較兩個字串大小的方法, 首先比

Ideal Path,uva1599/hdu 3760(短路中字典的路徑)

https://vjudge.net/problem/UVA-1599 給一個n個點m條邊(2<=n<=100000,1<=m<=200000)的無向圖,每條邊上都塗有一種顏色。求從結點1到結點n的一條路徑,使得經過的邊數儘量少,在此前提下,經過邊的顏色序列的字典序最小。

POJ-3693--字尾陣列求字典重複次數多子串

摘自2009年國家集訓隊羅穗騫論文《字尾陣列-處理字串的有力工具》 因此我們只需處理出原串正反兩個版本的字尾陣列,然後用rmq問題的處理方法求LCP,我的處理方法是讓關鍵點包含在r中,如果想包含在l中,只需把向前向後擴充套件的位置稍作處理&查詢rank最小值的區間

輸出字典的拓撲排序

#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<queue> #include<vector> #define

字典問題Best Cow Line

#include <iostream> #include <string> using namespace std; int main() { int N = 6; //cin >> N; //char s[] =

043_字典問題(best cow line)

  poj 3617   從一個字串s中頭部或者尾部取同一個字元,加到字串T中,要求字串T的字典序最小。   對s和s的逆序s'進行比較。如果一樣再對下一對進行比較,保證較小的字母較早被訪問。   題

3693 求這串字元中的重複次數多的連續重複子串,多組答案輸出字典的那個串(字尾陣列)

題目:求這串字元中的重複次數最多的連續重複子串,多組答案輸出字典序最小的那個串。 思路:與前一個題目幾乎一樣的,加上了字典序。多判斷就好 //#include<bits/stdc++.h> #include<iostream> #include

【雙向bfs(一次可也)】【非簡單圖的短路】UVa1599 Ideal Path 【紫書6-20經典例題】【無向圖求字典短路】

【雙向bfs(一次也可)】【非簡單圖的最短路】UVa1599 Ideal Path 【紫書6-20經典例題】【無向圖求字典序最小的最短路】 New labyrinth attraction is open in New Lostland amusement p

【Educational Codeforces Round 2C】【貪心】最少修改數下得到字典儘可能回文串

A string is called palindrome if it reads the same from left to right and from right to left. For example "kazak", "oo", "r" and "mikhailrubinchikkihcnib