一道很有意思的搜尋題,看了別人的思路,原來是暴力解就可以了,用二進位制來表示馬存在的個數,注意時間可能有點慢,剪枝可以大大縮短時間
思路:二進位制列舉,總方案數2^25,在每一種方案中找到滿足的條件(馬管轄所有棋盤)具體思路都放到**裡了。
#include#includeusing namespace std;
#define inf 0x3f3f3f3f;
int dir[8][2]=,,,,,,,};//馬走日
int vis[8][2]=,,,,,,,};//蹩了馬腳
int n=5,m=5;
int map[5][5];
int minx=inf;//剪枝
int fun(int t)
} }for(int i=0;ifor(int j=0;jif(!map[i][j])
return 0;
if(cntminx=cnt;
return cnt;
}int main()
for(int i=0;i<26;i++)
if(ans[i])
return 0;
}
計蒜客 馬的覆蓋點 dfs
題意 已知馬走日,可以走八個方向,現用 表示可走的路,表示到達的點。給出馬的乙個初始位置,請輸出馬在三步內可以到達的點 圖來表示 思路 dfs暴力搜尋即可。注意 不要返回,因為走三步時可能經過這個點。include include include include include include in...
計蒜客 2019計蒜之道D
題意 現在給定你乙個字串 s ss 以及乙個整數 k kk,請求出 s ss的字典序最小的長度為 k kk的子串行。資料範圍 0 s 5000000 00 s 5000 000 樣例輸入 helloworld 5樣例輸出 ellld思路 假如我們先不考慮長度為k的限制我們應當怎麼做?我們以樣例為例子...
計蒜客 解碼
蒜頭君自己發明了一種字串的編碼方式,對於只含有大小寫字母的字串,可以用數字來表示括號裡面的串連續出現的次數 數字有可能超過一位數 比如a abcd 2等價於aabcdabcd。特別地,如果數字前面沒有括號,表示緊貼數字的前面的 乙個字母 出現的次數。比如abc2表示abcc。為了降低解碼的難度,蒜頭...