关注
第三题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;
}
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
rush$0522:转正名单没进,大概率本来就没打算留你 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 你最近因为什么迷茫? #
4572次浏览 92人参与
# 秋招有哪些公司要求提前实习 #
102251次浏览 542人参与
# 领导做过最不靠谱的事 #
3059次浏览 52人参与
# 求职你最看重什么? #
151967次浏览 882人参与
# 你都在哪些场所面过试? #
2742次浏览 41人参与
# 实习转正进行时 #
138127次浏览 892人参与
# 当发现同事想辞职 #
13573次浏览 44人参与
# 工作压力大怎么缓解 #
132364次浏览 1138人参与
# 实习心态崩了 #
99906次浏览 503人参与
# 制造业的秋招小结 #
139357次浏览 2078人参与
# 电网求职进展汇总 #
37199次浏览 112人参与
# 运营商笔面经互助 #
195459次浏览 1804人参与
# 打工人锐评公司红黑榜 #
190969次浏览 1051人参与
# 在找工作求抱抱 #
1639570次浏览 10960人参与
# 担心入职之后被发现很菜怎么办 #
275794次浏览 1176人参与
# 哪些公司对双非友好 #
200740次浏览 1150人参与
# 面试被问期望薪资时该如何回答 #
338598次浏览 2104人参与
# 电信求职进展汇总 #
38144次浏览 195人参与
# 校招谈薪技巧 #
126428次浏览 1353人参与
# Prompt分享 #
5428次浏览 140人参与
查看5道真题和解析