a*r
2 楼
在leetcode上总是TLE, 基本想法是:建一个二维表(vector>)vvi记录
所有palindrome的位置,如果s[i]是一个palindrome的开头,则vvi[i]的vector记录所
有的下一个palindrome的开始位置。Vector dp记录最小分割数,dp[i]是sub
string s[i...n-]的最小分割数。从右到左扫描vvi,就可以建立dp[].最后输出dp[0].
这个方法应该是O(n^2) time 和 O(n^2) space.
int minCut(string s) {
int n=s.size();
if(s.size()==1) return 0;
if(setTable(s)) return 0;
vector dp(n);// dp[i] store the minCut for s[i...n-1]
dp[n-1]=0;
for(int i=n-2; i>=0;i--){
dp[i]=n-i-1;
for(auto it=vvi[i].begin();it!=vvi[i].end();it++){
if(*it==n) dp[i]=0;
if(dp[*it]+1 }
}
return dp[0];
}
int setTable(string s){ // set up a table vvi such that vvi[i] record all
the next Palindrome start position.
int n=s.size();
vvi.resize(n);
for(int i=n-1;i>=0;i--){ // first search how many positions could arrive
at the end of s;
if(isPalindrome(s.substr(i))) vvi[i].push_back(n);
}
if(!vvi[0].empty() && vvi[0][0]==n) return 0; //if we there is a
palindrome starting 0, then the cut is 0;
for(int i=s.size()-1;i>=0;i--){
if(!vvi[i].empty()){ //if vvi[i] is not empty then start searching
all palindromes ended at s[i-1].
for(int j=i-1;j>=0;j--){
if(isPalindrome(s.substr(j,i-j))){
vvi[j].push_back(i);//found one mark vvi[j] with i.
}
}
}
return 1;
}
bool isPalindrome(string s){
if(s.size()==1) return true;
for(int i=0,j=s.size()-1;i if(s[i]!=s[j]) return false;
}
return true;
}
所有palindrome的位置,如果s[i]是一个palindrome的开头,则vvi[i]的vector记录所
有的下一个palindrome的开始位置。Vector
string s[i...n-]的最小分割数。从右到左扫描vvi,就可以建立dp[].最后输出dp[0].
这个方法应该是O(n^2) time 和 O(n^2) space.
int minCut(string s) {
int n=s.size();
if(s.size()==1) return 0;
if(setTable(s)) return 0;
vector
dp[n-1]=0;
for(int i=n-2; i>=0;i--){
dp[i]=n-i-1;
for(auto it=vvi[i].begin();it!=vvi[i].end();it++){
if(*it==n) dp[i]=0;
if(dp[*it]+1
}
return dp[0];
}
int setTable(string s){ // set up a table vvi such that vvi[i] record all
the next Palindrome start position.
int n=s.size();
vvi.resize(n);
for(int i=n-1;i>=0;i--){ // first search how many positions could arrive
at the end of s;
if(isPalindrome(s.substr(i))) vvi[i].push_back(n);
}
if(!vvi[0].empty() && vvi[0][0]==n) return 0; //if we there is a
palindrome starting 0, then the cut is 0;
for(int i=s.size()-1;i>=0;i--){
if(!vvi[i].empty()){ //if vvi[i] is not empty then start searching
all palindromes ended at s[i-1].
for(int j=i-1;j>=0;j--){
if(isPalindrome(s.substr(j,i-j))){
vvi[j].push_back(i);//found one mark vvi[j] with i.
}
}
}
return 1;
}
bool isPalindrome(string s){
if(s.size()==1) return true;
for(int i=0,j=s.size()-1;i
}
return true;
}
S*8
3 楼
【 以下文字转载自 Automobile 讨论区 】
发信人: error500 (null), 信区: Automobile
标 题: 一个娃有必要七座吗?
发信站: BBS 未名空间站 (Fri Jul 5 02:29:35 2019, 美东)
一娃,偶尔来两个老人,一年撑死road trip一周时间吧。
通勤很近,从最近几年使用来看一年也就6000迈封顶了。
为了一年少有的几次可能的长途(四个大人+一娃+行李)买个七座感觉牺牲不少更合适
的选择,尤其如果买豪华车,选择少之又少。应该很多家庭都是这种情况,大家觉得有
必要七座吗?
发信人: error500 (null), 信区: Automobile
标 题: 一个娃有必要七座吗?
发信站: BBS 未名空间站 (Fri Jul 5 02:29:35 2019, 美东)
一娃,偶尔来两个老人,一年撑死road trip一周时间吧。
通勤很近,从最近几年使用来看一年也就6000迈封顶了。
为了一年少有的几次可能的长途(四个大人+一娃+行李)买个七座感觉牺牲不少更合适
的选择,尤其如果买豪华车,选择少之又少。应该很多家庭都是这种情况,大家觉得有
必要七座吗?
a*e
4 楼
【 以下文字转载自 Parenting 讨论区 】
发信人: caoebb (萌萌和芃芃), 信区: Parenting
标 题: Re: 作为穷人买低端Steinway的代表我说说体会
发信站: BBS 未名空间站 (Fri Feb 7 00:52:42 2014, 美东)
我不懂钢琴,不过你的文章写的真的没有说服力。兰博基尼,宾利都是大众旗下的。你
这相当于买了个大众汽车,感觉各方面都很满意。然后就说自己买了个低端兰博基尼,
并以此证明兰博基尼值得买。
发信人: caoebb (萌萌和芃芃), 信区: Parenting
标 题: Re: 作为穷人买低端Steinway的代表我说说体会
发信站: BBS 未名空间站 (Fri Feb 7 00:52:42 2014, 美东)
我不懂钢琴,不过你的文章写的真的没有说服力。兰博基尼,宾利都是大众旗下的。你
这相当于买了个大众汽车,感觉各方面都很满意。然后就说自己买了个低端兰博基尼,
并以此证明兰博基尼值得买。
相关阅读
诺贝尔奖得主在生物学家中 (转载)偷idea这事我遇到过 (转载)厕所里百思不得其解的一幕纽约法院将对黑猩猩是否具有“人格”做出裁决 (转载)小将不但喜欢主动挑衅, 而且容易怂 (转载)Re: 求证:Betzig也是科大女婿? (转载)Re: 钱不是你的命,但可以要了你的命 (转载)奥巴马:世界转太快 地球要失控 没人管得住它蓝翔博士毕业课题蹄丝的位置我看老大就这么定吧美363公斤死者火化喷出高温油脂引燃火葬场 (转载)看到刮胡子那个图片有感为什么donut和bagel中间都有个洞?孔子奖还在发吗?说点正经的,如果埃博拉真的严重了,家里应该备点啥? (转载)把成龙和喷气李放一个铁笼子里面血拼,谁赢啊?刚来就发现做不了版副了。。。Re: 板蓝根真有防范大规模疫情的作用! (转载)求科普:肚皮版为什么归类为情感杂想?请各位积极参加忆蹄丝征文活动,我和马蹄丝的那些年