宇宙射線會在無限的二維平面上傳播(可以看做乙個二維網格圖),初始方向預設向上。宇宙射線會在發射出一段距離後**,向該方向的左右45°方向**出兩條宇宙射線,同時威力不變!宇宙射線會**n 次,每次**後會在**方向前進 ai個單位長度。求有多少個位置會被打擊。
輸入第一行包含乙個正整數n(n<=30) ,表示宇宙射線會**n次。
第二行包含n個正整數a1,a2…an,第 i個數ai 表示第 i次**的宇宙射線會在它原方向上繼續走多少個單位長度。輸出乙個數 ans,表示有多少個位置會被打擊。
輸入樣例:
4輸出樣例: 例題圖示:4 2 2 3
利用乙個容器set,可以保證點的唯一性。因為每次**有明顯的對稱性,所以可以每次只向一邊**然後另一邊的點不再需要計算直接對稱,本解法向右**。設向上的方向為0,順時針為1234567。對於乙個點的有效資訊是橫縱座標,到達這個點之前的方向,該點屬於哪一層。
利用遞迴的思想深入到最後一層之後,開始返回,首先將轉折點存入set然後再把對稱點也存進去,再把上乙個轉折點到這個點途徑的點都存進去。最後set中點的個數就是被打擊的點的個數。
#include
#include
#define n 35
using
namespace std;
struct point
bool
operator
<
(const point& p)
const};
int n =0;
int a[n]
;set sec;
void
fun(point p,
int index =0,
int dir =0)
else
if(dir ==1)
else
if(dir ==2)
else
if(dir ==3)
else
if(dir ==4)
else
if(dir ==5)
else
if(dir ==6)
else
if(dir ==7)
sec.
insert
(st.
begin()
, st.
end())
;switch
(dir)
//存入打擊點
}int
main()
可怕的宇宙射線
題意 宇宙射線會在無限的二維平面上傳播 可以看做乙個二維網格圖 初始方向預設向上。宇宙射線會在發射出一段距離後 向該方向的左右45 方向 出兩條宇宙射線,同時威力不變。宇宙射線會 n次,每次 後會在 方向前進ai 個單位長度。計算出共有多少個位置會被打擊。輸入 輸入第一行包含乙個正整數n n 30 ...
可怕的宇宙射線 dfs 剪枝
寫在前面 對於這個問題,首先我們可以採用暴力bfs或者dfs,但是這種演算法的複雜度是指數級的,如果考慮 30次,那麼它的迴圈次數是2 302 230,如果在正規比賽中肯定會超時,在詢問了大佬之後,這個問題可以採用dfs加上剪枝來解決,這裡和大家分享一下 在浩瀚的宇宙中,存在著1種生物,這種生物可以...
CSP模擬 題目C 可怕的宇宙射線
眾所周知,瑞神已經達到了cs本科生的天花板,但殊不知天外有天,人外有苟。在浩瀚的宇宙中,存在著 種叫做苟狗的生物,這種生物天生就能達到人類研究生的知識水平,並且天生擅長csp,甚至有全國第一的水平 但最可怕的是,它可以發出宇宙射線 宇宙射線可以摧毀人的智商,進行降智打擊 宇宙射線會在無限的二維平面上...