【計蒜客習題】消除字符串

問題描述


蒜頭君喜歡中心對稱的字符串,即回文字符串。現在蒜頭君手里有一個字符串 SS,蒜頭君每次都會進行這樣的操作:從 SS 中挑選一個回文的子序列,將其從字符串 SS 中去除,剩下的字符重組成新的字符串 SS。 蒜頭君想知道,最少可以進行多少次操作,可以消除整個字符串。

?

輸入格式


輸入一行。輸入一個字符串 S(1≤length(S)≤16),字符串均由小寫字母組成。


輸出格式


輸出一行,輸出一個整數,表示消除整個字符串需要的最少操作次數。

?

樣例輸入


abaccba


樣例輸出


2


?

呃呃,狀壓DP的經典模型,其實狀壓DP就是用來解決這類集合相關問題的。

每次都是刪去集合的子集,我們可以通過枚舉子集來解決。如果一個集合是回文序列,dp為1;否則就是其子集的dp值之和的最小值。

這道題唯一需要好好寫的是判斷回文序列。。。(dalao請忽略)

 1 #include<cstdio>
 2 #include<cstring>
 3 inline int min(int a,int b) {return a<b?a:b;}
 4 const int maxn=20,inf=0x3f3f3f3f;
 5 int dp[1<<maxn],len;
 6 bool ok[1<<maxn];
 7 char s[maxn];
 8 inline bool judge(int i) {
 9     int h=len,l=0;
10     while(h>l) {
11         while(!((1<<h)&i)) --h;
12         while(!((1<<l)&i)) ++l;
13         if(s[h]!=s[l]) return false;
14         --h,++l;
15     }
16     return true;
17 }
18 int main() {
19     scanf("%s",s);
20     len=strlen(s);
21     memset(dp,inf,sizeof(dp));
22     dp[0]=0;
23     for(int i=1;i<(1<<len);++i) {
24         if(judge(i)) {dp[i]=1;continue;}
25         for(int j=i;j;j=(j-1)&i) {
26             if(j==i) continue;
27             dp[i]=min(dp[i],dp[i-j]+dp[j]);
28         }
29     }
30     printf("%d",dp[(1<<len)-1]);
31     return 0;
32 }
AC代碼

?

轉載于:https://www.cnblogs.com/Mr94Kevin/p/9636979.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/249529.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/249529.shtml
英文地址,請注明出處:http://en.pswp.cn/news/249529.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

HierarchicalBeanFactory

BeanFactory分層 package org.springframework.beans.factory;//分層工廠 public interface HierarchicalBeanFactory extends BeanFactory {//返回工廠的父工廠BeanFactory getParentBeanFactory();//這個工廠中是否包含這個Beanboolean containsLocalBean(String name); }測…

Training a classifier

你已經學習了如何定義神經網絡&#xff0c;計算損失和執行網絡權重的更新。 現在你或許在思考。 What about data? 通常當你需要處理圖像&#xff0c;文本&#xff0c;音頻&#xff0c;視頻數據&#xff0c;你能夠使用標準的python包將數據加載進numpy數組。之后你能夠轉換這些…

19歲白帽子通過bug懸賞賺到一百萬美元--轉

出處&#xff1a;https://news.cnblogs.com/n/620858/ 19 歲的 Santiago Lopez 通過 bug 懸賞平臺 HackerOne 報告漏洞&#xff0c;成為第一位通過 bug 懸賞賺到一百萬美元的白帽子黑客。他的白帽子生涯始于 2015 年&#xff0c;至今共報告了超過 1600 個安全漏洞。他在 16 歲時…

代碼分層的設計

分層思想&#xff0c;是應用系統最常見的一種架構模式&#xff0c;我們會將系統橫向切割&#xff0c;根據業務職責劃分。MVC 三層架構就是非常典型架構模式&#xff0c;劃分的目的是規劃軟件系統的邏輯結構便于開發維護。MVC&#xff1a;英文即 Model-View-Controller&#xff…

【24小時內第四更】為什么我們要堅持寫博客?

前言 從2018年7月份&#xff0c;我開始了寫作博客之路。開始之前&#xff0c;我打算分享下之前的經歷。去年初公司來了個架構師&#xff0c;內部分享過docker原理&#xff0c;TDD單元測試驅動&#xff0c;并發并行異步編程等內容&#xff0c;讓我著實驚呆了&#xff0c;因為確實…

sqoop快速入門

轉自http://www.aboutyun.com/thread-22549-1-1.html 轉載于:https://www.cnblogs.com/drjava/p/10473297.html

ListableBeanFactory接口

ListableBeanFactory獲取bean時,Spring 鼓勵使用這個接口定義的api. 還有個Beanfactory方便使用.其他的4個接口都是不鼓勵使用的. 提供容器中bean迭代的功能,不再需要一個個bean地查找.比如可以一次獲取全部的bean(太暴力了),根據類型獲取bean.在看SpringMVC時,掃描包路徑下的…

HDU 4035 Maze

Maze http://acm.hdu.edu.cn/showproblem.php?pid4035 分析&#xff1a; 在樹上走來走去&#xff0c;然后在一個點可以k的概率回到1&#xff0c;可以e的概率走出去&#xff0c;可以1-k-e的概率走到其他的位置&#xff08;分為父節點和子節點討論&#xff09;。 轉移方程就是&a…

面向對象之三大特性:繼承,封裝,多態

python面向對象的三大特性&#xff1a;繼承&#xff0c;封裝&#xff0c;多態。 1. 封裝: 把很多數據封裝到?個對象中. 把固定功能的代碼封裝到?個代碼塊, 函數, 對象, 打包成模塊. 這都屬于封裝的思想. 具體的情況具體分析. 比如. 你寫了?個很?B的函數. 那這個也可以被稱為…

configurablebeanfactory

ConfigurableBeanFactory定義BeanFactory的配置.ConfigurableBeanFactory中定義了太多太多的api,比如類加載器,類型轉化,屬性編輯器,BeanPostProcessor,作用域,bean定義,處理bean依賴關系,合并其他ConfigurableBeanFactory,bean如何銷毀. ConfigurableBeanFactory同時繼承了Hi…

Xlua文件在熱更新中調用方法

Xlua文件在熱更新中調用方法 public class news : MonoBehaviour { LuaEnv luaEnv;//定義Lua初始變量 void Awake() { luaEnv new LuaEnv();//new開辟空間 luaEnv.AddLoader(myload);//調用方法地址、返回字節 luaEnv.DoString("requirefish");//更新文件 } void O…

springboot 使用的配置

1&#xff0c;控制臺打印sql logging:level:com.sdyy.test.mapper: debug 2&#xff0c;開啟駝峰命名 mybatis.configuration.map-underscore-to-camel-casetrue 轉載于:https://www.cnblogs.com/xiaohu1218/p/10477318.html

AutowireCapableBeanFactory接口

AutowireCapableBeanFactory在BeanFactory基礎上實現了對存在實例的管理.可以使用這個接口集成其它框架,捆綁并填充并不由Spring管理生命周期并已存在的實例.像集成WebWork的Actions 和Tapestry Page就很實用. 一般應用開發者不會使用這個接口,所以像ApplicationContext這樣的…

外觀模式

一、什么是外觀模式   有些人可能炒過股票&#xff0c;但其實大部分人都不太懂&#xff0c;這種沒有足夠了解證券知識的情況下做股票是很容易虧錢的&#xff0c;剛開始炒股肯定都會想&#xff0c;如果有個懂行的幫幫手就好&#xff0c;其實基金就是個好幫手&#xff0c;支付寶…

OC內存管理

OC內存管理 一、基本原理 &#xff08;一&#xff09;為什么要進行內存管理。 由于移動設備的內存極其有限&#xff0c;所以每個APP所占的內存也是有限制的&#xff0c;當app所占用的內存較多時&#xff0c;系統就會發出內存警告&#xff0c;這時需要回收一些不需要再繼續使用的…

cf1132E. Knapsack(搜索)

題意 題目鏈接 Sol 看了status里面最短的代碼。。感覺自己真是菜的一批。。直接爆搜居然可以過&#xff1f;。。但是現在還沒終測所以可能會fst。。 #include<bits/stdc.h> #define Pair pair<int, int> #define MP(x, y) make_pair(x, y) #define fi first #defi…

ConfigurableListableBeanFactory

ConfigurableListableBeanFactory 提供bean definition的解析,注冊功能,再對單例來個預加載(解決循環依賴問題). 貌似我們一般開發就會直接定義這么個接口了事.而不是像Spring這樣先根據使用情況細分那么多,到這邊再合并 ConfigurableListableBeanFactory具體&#xff1a; 1、…

焦旭超 201771010109《面向對象程序設計課程學習進度條》

《2018面向對象程序設計&#xff08;java&#xff09;課程學習進度條》 周次 &#xff08;閱讀/編寫&#xff09;代碼行數 發布博客量/博客評論量 課堂/課余學習時間&#xff08;小時&#xff09; 最滿意的編程任務 第一周 50/20 1/0 6/4 九九乘法表 第二周 90/5…

面試題集錦

1. L1范式和L2范式的區別 (1) L1范式是對應參數向量絕對值之和 (2) L1范式具有稀疏性 (3) L1范式可以用來作為特征選擇&#xff0c;并且可解釋性較強&#xff08;這里的原理是在實際Loss function 中都需要求最小值&#xff0c;根據L1的定義可知L1最小值只有0&#xff0c;故可以…

Spring注解配置工作原理源碼解析

一、背景知識 在【Spring實戰】Spring容器初始化完成后執行初始化數據方法一文中說要分析其實現原理&#xff0c;于是就從源碼中尋找答案&#xff0c;看源碼容易跑偏&#xff0c;因此應當有個主線&#xff0c;或者帶著問題、目標去看&#xff0c;這樣才能最大限度的提升自身代…