在乙個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...