关注
第三题100
public long GetNumOfExpress(String express, boolean desired) {
// write code here
if (express==null || express.length()==0 || !isValid(express.toCharArray())){
return 0;
}
char[] str = express.toCharArray();
int len = str.length;
long[][] dpTrue = new long[len][len];
long[][] dpFalse = new long[len][len];
if (str[0]=='0'){
dpTrue[0][0] = 0;
dpFalse[0][0] = 1;
}
else {
dpTrue[0][0] = 1;
dpFalse[0][0] = 0;
}
// 区间dp
for (int j=0;j<len;j+=2){
if (str[j]=='0'){
dpTrue[j][j] = 0;
dpFalse[j][j] = 1;
}
else {
dpTrue[j][j] = 1;
dpFalse[j][j] = 0;
}
for (int i=j-2;i>=0;i-=2){
for (int k=i+1;k<j;k+=2){
if (str[k]=='&'){
dpTrue[i][j] += dpTrue[i][k-1]*dpTrue[k+1][j];
dpFalse[i][j]+= dpTrue[i][k-1]*dpFalse[k+1][j]+dpFalse[i][k-1]*dpTrue[k+1][j]+dpFalse[i][k-1]*dpFalse[k+1][j];
}
else if (str[k]=='|'){
dpTrue[i][j] += dpTrue[i][k-1]*dpTrue[k+1][j] + dpTrue[i][k-1]*dpFalse[k+1][j] + dpFalse[i][k-1]*dpTrue[k+1][j];
dpFalse[i][j] += dpFalse[i][k-1]*dpFalse[k+1][j];
}
else {
dpTrue[i][j] += dpTrue[i][k-1]*dpFalse[k+1][j] + dpFalse[i][k-1]*dpTrue[k+1][j];
dpFalse[i][j] += dpTrue[i][k-1]*dpTrue[k+1][j] + dpFalse[i][k-1]*dpFalse[k+1][j];
}
}
}
}
if (desired)
return dpTrue[0][len-1];
else
return dpFalse[0][len-1];
}
private boolean isValid(char[] str){
boolean flag = true;
for (char c:str){
if (flag){
if (c!='0' && c!='1')
return false;
flag = false;
}
else {
if (c!='|' && c!='&' && c!='^')
return false;
flag = true;
}
}
if (flag)
return false;
return true;
}
查看原帖
点赞 评论
相关推荐
04-03 10:26
中国矿业大学 Java 二十岁的编程男神王大...:兄弟,到岗时间你说的多少呀,我们导师只能要求六月走,感觉说六月会不会给挂了offer
查看4道真题和解析 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 烂工作和没工作哪个更痛苦? #
12731次浏览 203人参与
# Tplink求职进展汇总 #
214438次浏览 976人参与
# 厦门银行科技岗值不值得投 #
17882次浏览 419人参与
# 面试体验最好和最差的公司 #
14633次浏览 85人参与
# 27届实习投递记录 #
21923次浏览 426人参与
# 给工作过的公司写一条大众点评,你会怎么写? #
4887次浏览 67人参与
# 你找工作想离家近 or 离家远? #
45856次浏览 361人参与
# 携程工作体验 #
27400次浏览 104人参与
# 我是XXX,请攻击我最薄弱的地方 #
70789次浏览 467人参与
# 实习心态崩了 #
112775次浏览 608人参与
# 春招至今,你收到几个面试了? #
40818次浏览 592人参与
# Agent面试会问什么? #
13460次浏览 418人参与
# 一人分享一个skill #
2924次浏览 74人参与
# 你收到了哪些公司的笔试? #
52514次浏览 415人参与
# 我的求职进度条 #
967974次浏览 6441人参与
# 秋招吐槽大会 #
325095次浏览 1586人参与
# AI替代不了什么? #
9029次浏览 125人参与
# 如何提高实习转正率? #
103175次浏览 627人参与
# 技术转行的心路历程 #
92237次浏览 783人参与
# 机械人春招想让哪家公司来捞你? #
397520次浏览 3186人参与
# 职场中那些令人叹为观止的八卦 #
105628次浏览 489人参与
