簡單搜尋 kuangbin C D

2022-05-03 13:12:30 字數 1945 閱讀 9065

我心態崩了,現在來回顧很早之前寫的簡單搜尋,好難啊,我怎麼寫不出來。

我開始把這個寫成了dfs,還寫搓了。。。

慢慢來吧。

這個題目很明顯是乙個很簡單的搜尋題,但是如果用dfs的話很容易出現問題,而且複雜度不低。

所以選擇用bfs。

這個知道用bfs就應該比較簡單了。

就是有三種走的方式,因為k最大為100000  所以我們要限制一下,不然會超時。

#include #include 

#include

#include

#include

#include

#include

#define inf 0x3f3f3f3f

using

namespace

std;

typedef

long

long

ll;const

int maxn = 5e5 + 100

;int

n, k;

bool

vis[maxn];

intd[maxn];

int t[2] = ;

void bfs(int

x)

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

}}int

main()

cpoj - 3279 

看到這個題目,我真的心態崩了,這個題目好難啊,結果居然是簡單搜尋,我現在懷疑我這一年來幹了什麼。。。

感覺自己好菜。。。

算了,沒辦法,還是好好刷題吧。

這個題目真的很難。

因為我們每乙個翻轉,都會改變左右的色塊,所以我們每次從下面的那塊來使得上面的那塊翻轉,如果需要的話。

如果知道這一點了就稍微好做那麼一點點了。

所以我們只要列舉第一塊是怎麼翻轉的,這樣子可以直接推出下面的是怎麼翻轉的。

知道這一點了,就很好寫了,不過還是不一定可以寫出**,因為不知道怎麼處理。

然後就看題解學習一下怎麼寫吧。

這個題目我有乙個地方出現bug了,然後一直沒有找到,就是一行有m個數,所以最多有m個1 所以列舉第一行的時候應該是1<

#include #include 

#include

#include

#include

#include

#include

#define inf 0x3f3f3f3f

using

namespace

std;

const

int maxn = 1e5 + 10

;int f[30][30], mp[30][30

];const

int dx[5] = ;

const

int dy[5] = ;

int ans[30][30

];int

n, m;

int getnum(int x, int y)//

這個是由初始和翻轉次數來判斷這個面是0還是1

return res % 2;}

intcal() }}

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

int res = 0

;

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

}return

res;

}void

solve()

int num =cal();

if (num >= 0 && (res < 0 || num

}if (res == -1) printf("

impossible\n");

else}}

}int

main()

}solve();

return0;

}

d

簡單搜尋題!

設有乙個4 4的棋盤,用四個棋子布到格仔中,要求滿足以下條件 1 任意兩個棋子不在同一行和同一列上 試問有多少種棋局,程式設計把它們全部列印出來。如下 include include include include include using namespace std int n 4,m 4,us...

簡單搜尋 DFS BFS

簡單搜尋 dfs bfs dfs 俗稱爆搜,為深度優先搜尋 bfs 俗稱廣搜,為寬度優先搜尋 假設當前有一棵解答樹 當然一般非標準樹形 dfs借助棧一路下通,直通到最後一層 即已算出乙個可行解 再退一層,看看在這一層還有沒有其他分支,有就繼續扎下去 重複這個過程 so,這就是所謂的 dfs可以解任何...

簡單搜尋 DFS BFS

1 dfs depth first search 深度優先搜尋演算法 是圖與樹搜尋中用到的一種演算法 遍歷的思想是 先從根部進行,一直遍歷到最底部的葉節點,然後再返回到根節點,判斷,如果該根節點上的葉節點都被遍歷過,再返回到根節點,直到遍歷到整棵樹。dfs遍歷循序 我們可以通過棧的思想來進行搜尋,a...