int calcuResult(vector<vector<int>>& dungeon,int posi,int posj,int temp){ if(temp<=result) return 0x80000000; int cur1=temp,cur2=temp; if(posi<size1-1){ if(dungeon[posi+1][posj]<0) cur1+=dungeon[posi+1][posj]; if(cur1>result){ int out1=calcuResult(dungeon,posi+1,posj,temp+dungeon[posi+1][posj]); if(out1==0x80000000)cur1=0x80000000; else if(cur1>out1) cur1=out1; }else{ cur1=0x80000000; } } if(posj<size2-1){ if(dungeon[posi][posj+1]<0) cur2+=dungeon[posi][posj+1]; if(cur2>result){ int out2=calcuResult(dungeon,posi,posj+1,temp+dungeon[posi][posj+1]); if(out2==0x80000000)cur2=0x80000000; else if(cur2>out2) cur2=out2; }else{ cur2=0x80000000; } } return max(cur1,cur2); }
void calcuPIF() { readPf1idx(); //calcuPf1Pos(); readPf1(); calcuResult(); }