1. 程式人生 > >計蒜客習題:迴文串

計蒜客習題:迴文串

問題描述

一個字串如果從左往右讀和從右往左讀都一樣,那麼這個字串是一個迴文串。例如:”abcba”,”abccba”。
蒜頭君想通過新增字元把一個非迴文字串變成迴文串。例如:”trit”,可以新增一個’i’ 變成迴文串”tirit”。請你用程式計算出,對於一個給定的字串,最少需要新增幾個字元,才能變成迴文串。
輸入格式
輸入一個長度為n(1≤n≤3000) 的字串。(字串只包含字母)
輸出格式
輸出最少需要新增的字元個數,佔一行。
樣例輸入
trit
樣例輸出
1

AC程式碼

#include <iostream>
#include <cstdio>
#include <cstring> using namespace std; char a[3010]; char b[3010]; int lcs[3010][3010]; int main() { memset(lcs,0,sizeof(lcs)); int n=1; char x; while(scanf("%c",&x)==1&&x!=10) { a[n]=x; n++; } n--; for(int i=1;i<=n;i++) { b[n-i+1
]=a[i]; } for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { if(a[i]==b[j])lcs[i][j]=lcs[i-1][j-1]+1; else lcs[i][j]=max(lcs[i-1][j],lcs[i][j-1]); } } cout<<n-lcs[n][n]; return 0; }

相關推薦

習題

問題描述 一個字串如果從左往右讀和從右往左讀都一樣,那麼這個字串是一個迴文串。例如:”abcba”,”abccba”。 蒜頭君想通過新增字元把一個非迴文字串變成迴文串。例如:”trit”,可

習題

問題描述 一個正整數,如果交換高低位以後和原數相等,那麼稱這個數為迴文數。比如 121,2332 都是迴文數,134567 不是迴文數。 任意一個正整數,如果其不是迴文數,將該數交換高低位以後和原數相加得到一個新的數,如果新數不是迴文數,重複這個變換

習題表示式求值

問題描述 給定一個只包含加法和乘法的算術表示式,請你程式設計計算表示式的值的最後四位。 輸入格式 輸入僅有一行,為需要你計算的表示式,表示式中只包含數字、加法運算子’+’和乘法運算子’‘,

習題受歡迎的蒜頭

問題描述 蒜廠除了蒜頭君還有很多小蒜頭。 每隻蒜頭的夢想是成為最受歡迎的蒜頭。有 N 只蒜頭,有 M 對二元關係 (A,B),告訴你蒜頭 A 認為蒜頭 B 是受歡迎的。如果 A 認為 B 是受歡迎的,B 認為 C 是受歡迎的,則 A 也認為 C 是受

習題判定歐拉回路

問題描述 你學過一筆畫問題麼?其實一筆畫問題又叫歐拉回路,是指在畫的過程中,筆不離開紙,且圖中每條邊僅畫一次,而且可以回到起點的一條迴路。 蒜頭君打算考考你,給你一個圖,問是否存在歐拉回路?

習題進位制轉換

問題描述 輸入一個十進位制數N,將它轉換成R進位制數輸出。在10≤R≤16 的情況下,用’A’表示10,用’B’表示11,用’C’表示12,用’D’表示13,用’E’表示14,用’F’表示15

習題節點的最近公共祖先

問題描述 樹是一種很常見的資料結構。現在蒜頭君面臨一個問題,在一個有 n 個節點的樹上,節點編號分別是1…n。蒜頭想知道一些節點之間的最近公共祖先是那些節點。 輸入格式 第一行輸入一個整數

習題壘骰子

問題描述 賭聖atm晚年迷戀上了壘骰子,就是把骰子一個壘在另一個上邊,不能歪歪扭扭,要壘成方柱體。 經過長期觀察,atm 發現了穩定骰子的奧祕:有些數字的面貼著會互相排斥!我們先來規範一下骰子:1 的對面是 4,2 的對面是 5,3 的對面是 6。假

習題灌溉機器人

問題描述 農田灌溉是一項十分費體力的農活,特別是大型的農田。蒜頭君想為農民伯伯們減輕農作負擔,最近在研究一款高科技——灌溉機器人。它可以在遠端電腦控制下,給農田裡的作物進行灌溉。 現在有一片 N 行 M 列的農田。農田的土壤有兩種型別:型別 HH 和

習題a+b問題

問題描述 輸入兩個整數 a,b輸出兩個整數的和。 輸入格式 第一行輸入一個整數 T,表示需要計算的次數。 接下來 T 行,每行輸入兩個用空格分隔的整數 a,b。 輸出格式 對於每次輸

習題斐波那契數列

問題描述 相信小夥伴們都學過斐波那契數列,它是這樣的一個數列:1,1,2,3,5,8,13,21⋯。 用 f(n)表示斐波那契數列的第n項,則有:f(1)=f(2)=1,f(n)=f(n-1

習題】聖誕樹

clu 簡單 continue 先來 運算符 opera 整數 node 最短路問題 問題描述聖誕節快到了,蒜頭君準備做一棵大聖誕樹。這棵樹被表示成一組被編號的結點和一些邊的集合,樹的結點從 1 到 n 編號,樹的根永遠是 1。每個結點都有一個自身特有的數值,稱為它的權重,

習題】蒜頭君運送寶藏

scan 中一 put 中間 lca fat through 但是 con !!!原來LCA的題可以出的這麽難,完了這還屬於水題?! 先來解釋一下題意,有N個城市,在這N城市之間有M條邊(不一定每個城市都有邊)。我們的任務是找出給定兩個點之間路徑上的最小邊權

練習題兩儀劍法

info algo \n bubuko lld cst 使用 tdi -a lcm和gcd練習題:兩儀劍法 解題:就是求最小公倍數lcm:可以先用__gcd算出最大公約數,根據gcd與lcm的性質公式:gcd * lcm = a * b算出lcm。 註意:數據n和m最大為

練習題素數距離

%d 篩選 prime 最小 png 表數 cin 分享圖片 ret 計蒜客練習題:素數距離 解題思路:遍歷一遍is_prim數組 存儲[l,r]區間上是質數的數和質數總數(存儲素數表);遍歷一遍素數表數組 更新最大值 最小值機器對應的變量,最後打印即可。 AC代碼:

練習題互質數個數

互質數個數 題目: 解題思路:gcd(i,n)=1 即求與n互質的整數,也就是求尤拉函式值。 AC程式碼: #include <iostream> using namespace std; int main() { int n; cin>>n; i

練習題質數原根

質數 思路 分享 練習題 image 推導 過程 習題 com 質數原根 題目: 解題思路: 思路見推導過程計蒜客練習題:質數原根

程式設計超級棧

蒜頭君學習完資料結構之後,發現這種普通的棧已經不能滿足自己的需求了。於是蒜頭君想自己手動寫一個超級棧。超級棧和普通棧不同的是,如果自己想往棧底新增資料的話,可以通過把棧翻轉,然後再往棧頂新增資料來完成。聽起來是不是覺得這個棧很厲害? 對於超級棧的操作有四種: (1) 11

IMAUOJ-1241 Problem C(的判斷)

題目描述 對於一個字串如果從前往後讀和從後往前讀是一樣的,那麼我們就叫他迴文串。 輸入 輸入資料有多組,每組包括一個字串s(s長度≤50,字串中不包含空格)。 輸出 對於每個字串輸出其是否是迴文串。如果是迴文串輸出“Y”,否則輸出“N”。 樣例輸入 ABC

後綴字符題解

字符串 substr 思路 nbsp std 所有 暴力 urn span 給定N個字符串Si,判斷這N個字符串中以Si作為的後綴的有幾個 1.暴力解法   主要學習的是下標的使用,我最初看到後綴,總會想著讓待比較的字符串的下表從後往前移動,然後還要判斷越界等問題,很復