Ejemplo n.º 1
0
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);
}
Ejemplo n.º 2
0
void calcuPIF() {
    readPf1idx();
    //calcuPf1Pos();
    readPf1();
    calcuResult();
}