生成兩數相乘結果的螺旋陣列

2021-06-18 00:59:43 字數 1278 閱讀 2007

有人問到乙個演算法:

兩數相乘,生成乙個螺旋陣列。舉例說明:

3 * 4 生成的螺旋陣列為:

1---2---3---4

10-11-12--5

9---8---7---6

5 * 6 生成的螺旋陣列為:

1---2---3---4---5---6

18-19-20-21-22---7

17-28-29-30-23---8

16-27-26-25-24---9

15-14-13-12-11--10

也就是從外層順時針向內層旋轉;a * b的情況下,a為行數,b為列數。

分析過程:

以5 * 6為例,將生成二維陣列 a[5][6],其橫豎座標分別用i和j來表示,則生成的螺旋陣列:

從外向內第一圈(最外層):

1、上層:a[1][j],其中( j : 1-6 )

2、右層:a[i][6],其中( i : 2-5)

3、下層:a[5][j],其中( j : 5-1 )

4、左層:a[i][1],其中( i : 4-2)

從外向內第二圈:

1、上層:a[2][j],其中( j : 2-5 )

2、右層:a[i][5],其中( i : 3-4)

3、下層:a[4][j],其中( j : 4-2 )

4、左層:a[i][2],其中( i : 3-3)

。。。。。。

於是可寫出如下演算法:

public class screwarray 

j++;

}j--;

// 右層

i = layer + 1;

while (i <= (a - layer + 1))

i++;

}i--;

// 下層

j = b - layer;

while (j >= layer)

j--;

}j++;

// 左層

i = a - layer;

while (i >= layer + 1)

i--;

}i++;

layer++;

} return array; }

public static void main(string args)

system.out.println();

} }}

初步測試了一下,似乎結果都是正確的。。。試試吧!

演算法很不優雅,也難免會有錯誤,歡迎指正!

兩個整數相乘的結果一定正確嗎?

問題 在我們編寫程式時 經常需要進行各種計算,例如 將兩個int型整數的乘積,賦值給乙個 long 型變數,請問這種計算結果一定正確嗎?當為乙個 long 型變數賦值乙個整數常量時,如果這個整數超過了 int 的取值範圍,程式就會出現編譯錯誤,但是有一種情況程式是不會出錯的,就是將多個 int 型資...

生成平衡陣列的方案數

生成平衡陣列的方案數 給你乙個整數陣列nums。你需要選擇 恰好 乙個下標 下標從 0 開始 並刪除對應的元素。請注意剩下元素的下標可能會因為刪除操作而發生改變。比方說,如果nums 6,1,7,4,1 那麼 如果乙個陣列滿足奇數下標元素的和與偶數下標元素的和相等,該陣列就是乙個 平衡陣列 請你返回...

動態生成陣列 PHP生成器動態生成內容的陣列

每日17點準時技術乾貨分享 定義 1.生成器 動態生成內容的陣列 用到值的時候才去生產。2.搭配使用 關鍵字 yield foreach 過程 1.作為生成器的方法相當於定義了乙個陣列 2.生成器中的 yield,每次出現相當於定義了乙個陣列 現的值 3.foreach 會遍歷生成器中所有的 yie...