poj 3278 簡單搜尋bfs

2021-07-05 03:43:47 字數 463 閱讀 8160

題目大意:給出兩個數n,k;經過兩種操作使n成為k所需要的步數;操作1:n=n+1或n=n-1;操作2:n=n×2;

解題思路:用bfs搜尋,vis陣列標記狀態同時記錄到當前位置所用的步數;

**:#include #include #include using namespace std;

int n,k;

int vis[100005];

void bfs()

now=temp+1;

if(now>=0&&now<100005&&vis[now]==-1)

now=temp*2;

if(now>=0&&now<100005&&vis[now]==-1)

}}int main()

{ while(cin>>n>>k)

{memset(vis,-1,sizeof(vis));

bfs();

cout<

POJ 3278 題解 搜尋

牛 奶牛在k處不動 fj在n處去抓,最快要多長時間 某時刻fj的座標為x,fj有3種走法,每次每種走法1分鐘 往前走一步 往後走一步 傳送到2x處 time 1000 ms memory 65536 kb 搜尋 include include include include using namesp...

POJ 3278 簡單廣搜

poj3278 題意 輸入n,m,求由n到m需要最少步數,n只能加一減一或者乘二。寫的第二道廣搜題,發現用佇列就是每一種可能讀入隊尾,然後再從隊首乙個乙個的遍歷。需要做的是判斷條件和記錄步數。includeusing namespace std include include include def...

POJ 3278 解題報告

這道題是個bfs的問題,因為要求的是乙個相鄰節點間距離都為1的graph中兩個節點間的最短距離。一開始上來用的dfs,結果可想而知。3278 accepted 844k 63ms g 1192b id thestor1 lang c task poj3278 include include incl...