華為機試題解 奧特曼打怪獸

2021-09-24 10:56:40 字數 1688 閱讀 6345

在乙個n*n的正方形區域,每個小格可能有三種狀態

值為0,正常可通過

值為1,奧特曼可通過,同時還可以消滅怪獸,消滅後值變為0,消滅怪獸數量+1

值為-1,有大石頭,奧特曼無法通過

奧特曼需要先從上往下走,這個過程只能向下或者向右,到達右下角後,再從下往上走,這個過程只能向左或向上。需要找到奧特曼可以消滅怪獸的最大數量

輸入:第一行乙個n,表示n的正方形區域的大小,n不超過50

第二行到n+1行,每一行n個數,表示正方形區域的情況

輸出:奧特曼可以消滅怪獸的最大數量

1、和以前的動態規劃很像,但是好像是不能用動態規劃。(leetcode 741打臉了)

2、回溯,本題給c++的時間是2秒,一般都是1秒,說明可以走高複雜度策略

考試的時候沒寫出來,考完後寫出來了,就是這種心情

#include

using

namespace std;

const

int max =60;

void

walkup

(int gird[max]

[max]

,int i,

int j,

int n,

int tempans,

int& trueans)

}else

if(i ==0)

else

if(gird[i]

[j]==1)

}else

if(j ==0)

else

if(gird[i]

[j]==1)

}else

else

if(gird[i]

[j]==1)

}}void

walkdown

(int gird[max]

[max]

,int i,

int j,

int n,

int tempans,

int& trueans)

else

if(gird[i]

[j]==1)

}else

if(i == n-1)

else

if(gird[i]

[j]==1)

}else

if(j == n-1)

else

if(gird[i]

[j]==1)

}else

else

if(gird[i]

[j]==1)

}}intmain()

}int n;

cin >> n;

for(

int i =

0; i < n; i++)}

// 從上往下走

// for(int i = 0; i < n; i++)

// else if(gird[i][j] == 1)

// else

// }

// }

int tempans =0;

int trueans =0;

walkdown

(gird,0,

0, n, tempans, trueans)

; cout << trueans << endl;

return0;

}

C 奧特曼打怪獸之運算子過載(系列6)

題目描述在奧特曼打怪獸的過程中,會有各種魔法袋,奧特曼可以撿起這些魔法袋,對自己施加不同的魔法。魔法袋的種類和功能描述如下 1 好事成雙 魔法袋 過載 使自己的等級翻倍,生命值恢復滿血,為翻倍後等級的10倍,攻擊力提公升為翻倍後等級的3倍,經驗和錢財翻倍。2 禍不單行 魔法袋 過載 使自己的生命值 ...

2019騰訊校招實習筆試題打怪獸

小q打算穿越怪獸谷,他不會打怪,但是他有錢。他知道,只要給怪獸一定的金幣,怪獸就會一直護送著他出谷。在谷中,他會依次遇見n只怪獸,每只怪獸都有自己的武力值和要 賄賂 它所需的金幣數。如果小q沒有 賄賂 某只怪獸,而這只怪獸 武力值 又大於護送他的怪獸武力之和,這只怪獸就會攻擊他。小q想知道,要想成功...

華為機試題

今天去華為機試,感覺是再謹慎都不為過啊!zc前一天晚上還跟我強調了判空,記憶體釋放。前兩題都是基本題,後面一題不會。1 輸入兩個數 反轉相加的和輸出。2 三天打漁兩天曬網 從1990 年1月1日開始 打漁輸出fishing 曬網輸出sleeping 我因為printf的是fishing sleepi...