G Pots(罐子) POJ bfs搜尋

2021-10-08 10:54:50 字數 1281 閱讀 8561

題意:給你兩個罐子a和b,你可以進行六種操作,讓你求得最少的步驟使得a或b的罐子容量為c。

解題思路:a和b都在動態變化,我們可以將他們關聯起來,利用結構體陣列記錄當前狀態和步驟數,同樣,我們要利用輔助陣列visited來判斷當前狀態是否被訪問。這裡最難的就是記錄步驟,然後輸出每輪步驟,由於我們要按照原序輸出,故我們可以利用棧來實現步驟輸出。則此題可解。

ac**:

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

const

int maxn=

105;

int a,b,c;

typedef

struct node1 //a代表罐1,b代表罐2,其中step代表操作步驟數。

node1;

typedef

struct node2

node2;

bool visited[maxn]

[maxn]

;//標誌陣列,避免重複進行步驟,到死迴圈。

void

print

(int n)

intbfs

(int a,

int b,

int c,node2 *p)

else

if(i==1)

else

if(i==2)

else

}else

if(i==3)

else

if(i==4)

else

if(i==5)

else}if

(!visited[temp.a]

[temp.b]

)while

(!s.

empty()

)return0;

}}}}

cout<<

"impossible"

<

return0;

}int

main()

}

踢罐子 計算幾何

題目大意 平面上有n個點,其中任意2點不重合,任意3點不共線。我們等概率地選取乙個點a,再在剩下的n 1個點中等概率地選取乙個點b,再在剩下的n 2個點中等概率地選取乙個點c。然後我們計算傷害倍率d。作abc外接圓,每乙個位於弧bc和線段bc之間的點計1倍,每乙個位於弧bc上的點 包括b,c兩點 計...

雞尾酒買罐子

雞尾酒喜歡罐子,有一天他到了乙個罐子專賣店,他決定買好多好多罐子回家。但是專賣店快關門了,雞尾酒必須盡快選購,他決定按順序把罐子瀏覽一遍,如果他的錢花完了 錢數 0 或者已經走過了最後乙個罐子,就會立即離開商店。由於雞尾酒不會掩飾自己對罐子的喜愛,所以只要他現有的錢大於等於當前看到的罐子的 他就會購...

1246 罐子和硬幣

有n個罐子,有k個硬幣,每個罐子可以容納任意數量的硬幣。罐子是不透明的,你可以把這k個硬幣任意分配到罐子裡。然後罐子被打亂順序,你從外表無法區別罐子。最後罐子被編上號1 n。每次你可以詢問某個罐子,如果該罐子裡有硬幣,則你可以得到1個 但你不知道該罐子中還有多少硬幣 如果該罐子是空的,你得不到任何硬...