這題的結束條件只有一個:踩到了寶石數量為 0 的格子
過程重點:
1. 若該座標寶石數量不為 0 ,走過該座標時會增加 map[r][c] 的分數並且持有寶石數量 gem+1,該座標寶石數量 -1
2. 若機器人面向的格子是牆壁(下一步會撞牆) map[r][c] == -1 或是超出邊界(下一步會超出邊界) r+move<0 or r+move>m or c+move<0 or c+move>n 就會向右轉,其餘狀況維持同樣方向行走
解題過程:
移動方式 int mvt[4][2]={{0,1},{1,0},{0,-1},{-1,0}},idx=0; idx為記錄要前往哪裡
讀入 m,n,k,r,c 與 arr[m][n] 的內容
接下來就按照過程條件執行,並設定結束條件
while(arr[r][c]!=0){
gem++;
pt+=arr[r][c]--;
if(pt%k==0)idx++;
while(r+mvt[idx%4][0]<0||r+mvt[idx%4][0]>=m||c+mvt[idx%4][1]<0||c+mvt[idx%4][1]>=n||arr[r+mvt[idx%4][0]][c+mvt[idx%4][1]]==-1)idx++;
r+=mvt[idx%4][0];c+=mvt[idx%4][1];
}
輸出 gem 寶石數量