有人問到乙個演算法:
兩數相乘,生成乙個螺旋陣列。舉例說明:
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...