專題一 簡單搜尋

2021-09-14 06:53:12 字數 2558 閱讀 7783

我就是乙個智障,總是把變數弄錯,導致浪費了很多時間

用簡單的回溯法,就可以暴力破解

我的**:

#includeusing namespace std;

const int maxn = 9;

bool col[maxn];

char qipan[maxn][maxn];

int n, maxk;

int ans = 0;

bool read ()

return true;

}void dfs (int i, int cur)

for (int k = i; k <= n-maxk+cur; k++)

} }}int main ()

}

使用bfs就可以了

我的**:

#include#include#includeusing namespace std;

const int maxn = 32;

const int maxd = 6;

const int di = ; // i是控制上下

const int dj = ; // j是控制前後

const int dk = ; // k是控制左右

char migong[maxn][maxn][maxn];

int d[maxn][maxn][maxn], l, r, c, si, sj, sk;

bool read ()

}} }

memset(d, -1, sizeof(d));

return true;

}bool inside (int i, int j, int k)

int bfs () else if (migong[ni][nj][nk] == 'e')

}} }

return 0;

}int main () else

}}

這道題,一開始是沒有什麼思路的,看了別人的解答過程,才有的思路,主要是涉及了關於數學的運算

手動模擬一下除法的過程,就會發現:上一位的除法剩下的餘數乘以10,會進入下一位的除法運算的運算

我的**:

#includeusing namespace std;

const int maxn = 100;

int p[maxn], len, n;

bool dfs (int cur, int r)

if (dfs(cur+1, (r*10+1)%n))

p[cur] = 0;

if ((r*10)%n == 0)

if (dfs(cur+1, (r*10)%n))

} return false;

}int main ()

printf("\n");

}}

先把所有素數都儲存下來,然後再用bfs尋找最短路徑

我的**:

#include#include#include#includeusing namespace std;

const int maxn = 10;

bool prime[maxn][maxn][maxn][maxn];

int d[maxn][maxn][maxn][maxn], start[4], goal[4];

void calprime ()

for (int j = sqrt(i); j > 1; j--)

} if (ok)

prime[index[0]][index[1]][index[2]][index[3]] = true;

} }}int bfs ()

}num[i] = flag;

for (num[i]; num[i] < 10; num[i]++)

}num[i] = flag;

} }return -1;

}int main ()

int ans = bfs();

printf("%d\n", ans);

} return 0;

}

比起簡單搜尋更像是模擬題,用set記錄那些遍歷過的資料,如果產生迴圈,則結果是不可能到達的,輸出-1

我的**:

#include#include#includeusing namespace std;

const int maxc = 200;

int c;

string p1, p2, p, ans;

setcache;

int solve ()

if (ans == p) return cnt;

if (cache.count(p)) return -1;

cache.insert(p);

p1 = p.substr(0, c);

p2 = p.substr(c, c); }}

int main ()

return 0;

}

kuangbin專題一 簡單搜尋

poj 1426 找出乙個由1和0組成的十進位制數m滿足m為n的倍數。有兩種做法,一種是bfs從低位數往高位數搜,另一種是用二叉樹陣列的結構存每次的求出來的餘數,當餘數為0時返回下標,然後根據下標求出其對應的數。1.bfs include includeusing namespace std con...

kuangbin專題一簡單搜尋總結

e find the multiple 題意 找乙個能整除n的數m,對m的要求是只有0和1組成。n不超過200,m長度不超過100.思路 很多人都寫了乙個假演算法,就是在unsigned long long 的範圍裡面找就行了,雖然也a了,但博主想在這裡提一下正確的思路。首先用到了同餘定理 即以任意...

kuangbin專題一 簡單搜尋 (完整)

1.poj 1321 棋盤排列 類似八皇后 poj 1321 棋盤排列 類似八皇后的排列搜尋。include include include using namespace std typedef long long ll int dp 11 11 char mp 11 11 int col 11 ...