网易游戏数据挖掘第二题HMM AC C++~只做出这一个题

/*
第三题,线下很OK,上线跪。第四题,弃疗了。
第一题不知道为啥,总是报段错误。。最后只能把一个while判断去掉,过了30%。关键是while这个地方有毛病,不知为啥。
和大佬交流了一下,说可能是这个&&没有截断。
vector<vector<int> > res;
for(int i=0;i<result.size();i++){
        vector<int> tmp(2,0);
        tmp[0]=result[i].first;tmp[1]=1;
        while(i<result.size()-1&&result[i+1].first==result[i].first){
               if(result[i+1].second!=result[i].second) tmp[1]+=1;                      
        i++;
      }
       res.push_back(tmp);
       if(i>=result.size()) break;
}
*/
//第二题如下。。
#include<iostream>
#include<vector>
#include<cmath>
#include<iomanip>
using namespace std;
int main(){
double init[4];
double cha[4][4];
double state[4][5];
for(int i=0;i<4;i++){
    cin>>init[i];
}
for(int i=0;i<4;i++){
    for(int j=0;j<4;j++){
    cin>>cha[i][j];
    }
}
for(int i=0;i<4;i++){
    for(int j=0;j<5;j++){
        cin>>state[i][j];
    }
}
vector<int> to;
char t;
while(cin>>t){
    if(t=='S'||t=='s') to.push_back(0);
            else if(t=='A'||t=='a') to.push_back(1);
            else if(t=='B'||t=='b') to.push_back(2);
            else if(t=='C'||t=='c') to.push_back(3);
            else if(t=='D'||t=='d') to.push_back(4);
}

double hu=0.0;
int flag=0;
vector<vector<double> > proba(2,vector<double>(4,0.0));
for(int i=0;i<to.size();i++){
    for(int p=0;p<4;p++)
            proba[flag][i]=0.0;
    if(i==0){
        for(int j=0;j<4;j++){
                proba[flag][j]=init[j]*state[j][to[i]];
          }
    }else{
        for(int j=0;j<4;j++){
            for(int k=0;k<4;k++){
                    proba[flag][j]+=proba[1-flag][k]*cha[k][j];
                }
        proba[flag][j]*=state[j][to[i]];
       }
    }
flag=1-flag;
}

for(int ind=0;ind<4;ind++)
            hu+=proba[1-flag][ind];
hu=log10(hu);
cout<<setiosflags(ios::fixed)<<setprecision(4)<<hu<<endl;
return 0;
}

全部评论
**…有大小写问题??
点赞 回复 分享
发布于 2017-09-09 23:08

相关推荐

coffrar:全都是已读😅沟通一千五百多个了
点赞 评论 收藏
分享
02-16 10:35
已编辑
西安科技大学 后端
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务