关注
第三题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;
}
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
03-05 22:34
河南工程学院 C++ 点赞 评论 收藏
分享
后测速成辅导一两个月...:把开源经历放个人项目上边应该更好,就像大部分人都把实习经历放个人项目上边 点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 春招/暑实第一面是哪家? #
4599次浏览 61人参与
# 面试官最爱问的 AI 问题是...... #
3362次浏览 117人参与
# 跟HR说什么能被秒回? #
2231次浏览 39人参与
# 机械制造面试点评 #
90280次浏览 482人参与
# 如何一边实习一边找下家? #
2644次浏览 42人参与
# 你收到了哪些公司的笔试? #
5755次浏览 25人参与
# 你的嫡系AI是哪个? #
1048次浏览 32人参与
# 你现在的工作,是“成长”还是“消耗”? #
4312次浏览 68人参与
# 现在入门AI应该走哪些方向? #
1014次浏览 27人参与
# 找不到好工作选择GAP真的丢人吗 #
102420次浏览 1020人参与
# 你认为小厂实习有用吗? #
127934次浏览 704人参与
# 金三银四,你的春招进行到哪个阶段了? #
19595次浏览 264人参与
# 滴滴笔试 #
38490次浏览 215人参与
# 追觅科技求职进展汇总 #
35739次浏览 190人参与
# 我的岗位说明书 #
316752次浏览 2784人参与
# 通信硬件公司爆料 #
200342次浏览 550人参与
# 哪些公司真双非友好? #
67410次浏览 281人参与
# 职场上哪些行为很加分? #
339734次浏览 3797人参与
# 实习进度记录 #
1219630次浏览 11864人参与
# 你上一次加班是什么时候? #
140073次浏览 780人参与