計蒜客 找錢包 暴搜 雜湊

2021-09-11 18:03:45 字數 1166 閱讀 8390

題目鏈結 

題解: c(25,5)=53130,  2^25大約是1000萬附近的,所以暴力搜尋時間在0.1秒級別,可以直接暴力

做法就是dfs找出所有放置5個棋子的情況,每種情況下,再將旋轉後對應的4種情況進行雜湊,用used陣列記錄雜湊是否被用過,4種都沒有用過,結果res++,否則說明之前某種搜尋的結果旋轉後和當前結果重複了,就不統計

#include #include #include // 5000萬

#define maxn 50000000

using namespace std;

int used[maxn];

int a[5][5] = ,,,

,};int res = 0;

void hash()

if(!used[h])

else return;

h = 0;

for(int j = 4;j >= 0;j--)

for(int i = 0;i < 5;i++)

used[h] = true;

h = 0;

for(int i = 4;i >= 0;i--)

for(int j = 4;j >= 0;j--)

used[h] = true;

h = 0;

for(int j = 0;j < 5;j++)

for(int i = 4;i >= 0;i--)

used[h] = true;

}void dfs(int x,int y,int num)

if(x==5&&num!=5) return;

if(num == 5)

// 選擇0

dfs(x,y+1,num);

// 選擇1

a[x][y] = 1;

dfs(x,y+1,num+1);

a[x][y] = 0;

}int main()

計蒜客 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。為了降低解碼的難度,蒜頭...

計蒜客 郊遊

蒜頭君成為了計蒜客附屬幼兒園的一名老師,乙個陽光明媚的週末,蒜頭君帶領著小朋友們去野外郊遊。一共有 2n2n 個小朋友,正好是 n n 個男孩和 n n 個女孩。蒜頭君讓小朋友分組玩遊戲,每組乙個男孩和乙個女孩,但是有些女孩比較討厭某些男孩,不願意和他們分在一組,男孩覺得和誰分在一組都無所謂。你能告...