騎士問題 C組模擬賽

2021-08-21 07:42:11 字數 985 閱讀 8687

8*8的棋盤,有一些障礙物,騎士只可以像象棋中的」馬」一樣走」日」字,問在x點最少走幾步到達y點

深搜/廣搜

廣搜比較快

不過深搜打起來比較簡單

所以我用了深搜

#include

#include

#include

#define min(a,b) a>b?b:a

using

namespace

std;

int b,a[9][9];

int dx[9]=;

int dy[9]=;

int ans;

void count(int x)

void dfs(int x1,int y1,int x2,int y2,int p)//x1,y1是當前座標,x2,y2是目標座標,p是當前的步數

//到目的地了

if (x1<1||y1<1||x1>8||y1>8||a[x1][y1]0||a[x1][y1]==-1) return;

//出棋盤或這是障礙或之前來過了,並且用的步數更少,說明就沒用了

for (int i=1;i<=8;i++)

}int main()

cin>>c>>ch;

int x1=c-96,y1=ch-48;

cin>>c>>ch;

int x2=c-96,y2=ch-48;//上面一大串讀入啊,初始化啊什麼的

dfs(x1,y1,x2,y2,0);//開始搜

if (ans==2147483647) printf("board %d: not reachable\n",++lon);

else

printf("board %d: %d moves\n",++lon,ans);//輸出}}

2020 10 05 普及組 模擬賽C組總結

總結這次考試沒發揮好,第二題沒有拿滿分,下次要繼續努力 t1 superpow 10 題目大意 已知a b 超級冪 代表 b個a的冪,求n對數的超級冪之積的個位數。正確思路 當打表後可以發現 b是沒用的,如果b大於2,b就等於2,答案和原來的是一樣的。所以處理一下跑個快速冪就行了。至於為什麼拿10分...

2020 11 14 普及組 模擬賽C組總結

這是乙個好東西 作者主頁 t1 操作 題目大意 給你乙個數列,讓你執行一些操作後輸出。這一題找規律即可。t2 遊戲 題目大意 判斷每個人被攻擊和攻擊的情況是否符合題目要求。思路 找規律。因為中間不可能出現三個一樣的攻擊操作,所以只需要判斷有沒有大於3的連續操作,直接輸出個數即可。提示 t3 到達 題...

2020 11 21 提高組 模擬賽C組總結

這是乙個好東西 作者主頁 t1 雞腿 樹蔭 題目大意 給你一段數,每次清空 l,r 區間的數,求每次清空後還剩多少個數。思路 線段樹 用線段樹維護區間,利用laz ylazy lazy 陣列來標記這段區間是否清空。暴力 用a ia i ai 記錄離他最近的沒有清空的數的位置,然後直接模擬。t2 su...