本題有乙個小trick,雖說給定的數的範圍是[1,10000],但有可能存在一條繞出100*100的矩陣(包含1-10000的數的矩陣)的從起點到達終點的路徑,比完全位於100*100矩陣(包含1-10000的數的矩陣)當中的從起點到達終點的最短路徑的長度還要短,於是,便要擴大矩陣,為特殊情況的搜尋另外開闢一條路。
#include #define ny i+dy[(dir+k)%4]
#define nx j+dx[(dir+k)%4]
const int n = 106;
const int m = 13000;
const int inf = (int)1e9;
const int dx[4] = ; // 0 down 1 right 2 up 3 left
const int dy[4] = ;
int a[n][n];
int dist[n][n];
int x[m], y[m];
int prm[m>>1], pn;
bool np[m];
void getprm()
}}int main()
{ getprm();
int flag = 1;
for(int i=0; i=0; k--) {
if(ny>=0 && nx>=0 && nx=0 && yk>=0 && xk
HDU 6069 素數篩法
思路 設 n p 1 p 2 p m n p 1 c 1 p 2 c 2 p m c m 則d n k kc 1 1 kc 2 1 kc m 1 d n c 1 1 c2 1 c m 1 則 d n k kc 1 1 kc 2 1 kc m 1 d n k kc 1 1 kc 2 1 k c m 1...
hdu 1973 bfs 素數判斷
題意 給出兩個四位數,現要改變第乙個數中的個,十,百,千位當中的乙個數 使它最終變成第二個數,要求這過程中形成的數是素數,問最少的步驟 題解 素數篩選 bfs sample input 3 1033 8179 1373 8017 1033 1033 sample output 6 7 0 注意第一位...
HDU 1973 BFS 素數打表
思路 先素數打表,把1到10005範圍內的素數找出來,然後把要輸入的兩個數當做字串輸入,然後進行廣搜 廣搜的思路就是,把每一位數都變化一下,存入佇列中,然後不斷的比較,就可以得出結果了!include include include include include include using nam...