記一道數字旋轉排列演算法題

2022-04-16 02:32:24 字數 909 閱讀 1301

面試的時候遇到一道演算法題,當時沒做出來,也沒有什麼思路。睡覺前突然想到解法,記錄一下。

題的大意如下,數字以1開始,並圍繞1做逆時針旋轉,其中1的座標為(0, 0),如下圖所示:

要求給乙個座標,求其未知的數是多少?例:給出(1, 0),該座標的數為2;給出(-1, -2),該座標上的數為22。

你可以先思考一下,或者寫寫試試。

點開檢視答案

說下解題思路,由點的座標可以得出目標值所在的圈數p,比如5在第2圈,p的大小為座標x或y較大絕對值n再+1,比如18為(-2,1),絕對值n為2,則18在第3圈(n+1),然後從(n, -n)順時針窮舉該圈的數即可。

**實現:

public int getthenumber(int x, int y) 

int n = math.max(math.abs(x), math.abs(y));

int p = n + 1;//圈數

int max = (2 * p - 1) * (2 * p - 1);//所在圈的最大值

int x1 = n;

int y1 = -n;

int res = max;

while (x1 != x || y1 != y)

if (x1 == -n && y1 < n)

if (x1 < n && y1 == n)

if (x1 == n && y1 > -n)

}return res;

}

突然又想到如果問題是給乙個數,求它的座標呢?

思路也是一樣的,先求出這個數所在的區間,也就是第幾圈,然後窮舉233333感覺有點蠢啊不過沒其他思路了

一道演算法題 拼數字

給定數字5 5,7,7,12,12,每個數字個數無限多,從中選擇盡量少的數字,使它們的和為n。因為對稱性,只需要考慮n 0的情況。因為存在一對互質的正整數 比如5和7 所以總是存在整數x,y使5x 7y 1,只要能夠產生1,就一定能夠產生任意正整數。因此問題一定有解。自下而上的更新 缺點是比較暴力,...

記一道DP題

給定 n l r 求長度為n的 且元素在 l r 的 且 陣列元素和是3的倍數的 陣列的 個數 dpmod0 表示區間內的數mod 3 0的個數 mod1 mod2 同理 dp i j 表示 長度為i的 陣列元素mod 3 為 j 的陣列的個數 如果 i 1長度的陣列和 mod 3 0 那麼我再加乙...

記一道模擬題

今天也沒幹啥,長時間不運動,身體似乎倍感不適,宿舍一天到晚也沒有陽光照進來,實在是讓人難受,我那幾雙臭鞋也越發那啥了.趁著還有點時間,寫了一道模擬題,總是有愛看題解的臭毛病,今天終於忍住沒看,自己寫出來了。還是挺高興的。是洛谷原創的題目,題目背景是我的世界,計算乙個 n n的方塊中會出現多少怪物。想...