ZeroJudge-g308.pB.跳跳布朗尼(Brownie)解題思路 ===================== ### 題目連結:https://zerojudge.tw/ShowProblem?problemid=g308 :::warning - 使用陣列(transinfo)紀錄格子是否曾經過。若<font color=cake>沒有</font>經過,<font color=cake>儲存傳送點資訊</font> ; 若<font color=fart>曾經過</font>,<font color=fart>設為「-1」</font>。 - 使用布林陣列(brownie)來記錄每個格子是否有布朗尼,吃過後將bool值設為「0」([布林值與0,1的關係](https://stackoverflow.com/questions/40009029/in-c-in-bool-true-1-and-false-0)),並以此判斷是否將答案+1。 - 每次結束後紀錄傳送後的位置。 ::: ### C++程式碼 ```c= #include<bits/stdc++.h> using namespace std; int main(){ bool brownie[1000]; int grid,point,trans,transinfo[1000]; while (cin>>grid>>point){ int sum=0; for(int i=0;i<grid;i++) cin>>transinfo[i]; for (int i=0;i<grid;i++) cin>>brownie[i]; while(transinfo[point]!=-1){ if(brownie[point]){ sum++; } trans=transinfo[point]; brownie[point]="0"; transinfo[point]=-1; point=trans; } cout<<sum<<endl; } return 0; } ```