假設需要生成前n個自然數的乙個隨機置換。例如,和就是合法的置換,但卻不是,因為數1出現兩次而數3卻沒有。這個程式常常用於模擬一些演算法。我們假設存在乙個隨機數生成器randint(i,j),它以相同的概率生成i和j之間的乙個整數。
int randint(int i, int j) //srand()放在主函式中了
填入從a[0]到a[n-1]的陣列a,為了填入a[i],生成隨機數直到它不同於已經生成的a[0],a[1],...,a[i-1]時,再將其填入a[i].
void fun1(int a, int n)
} a[i] = tmp;
}}
同演算法一,但要儲存乙個附加的陣列,稱之為used(用過的)陣列。當乙個隨機數ran最初被放入陣列a的時候,置used[ran]=1。
void fun2(int a, int n)
}
填寫該陣列使得a[i]=i+1.然後:
前N個自然數的隨機置換
來自 資料結構與演算法分析 c語言描述 練習2.7 問題描述 假設需要生成前n個自然數的乙個隨機置換。例如,和 就是合法的置換,但 卻不是,因為數1出現了兩次而數 3 缺沒有。這個程式常常用於模擬一些演算法。我們假設存在乙個隨機數生成器 randint i,j 它以相同的概率生成 i 和 j 之間的...
歸納策略 求前n個自然數的平方之和
求前n個自然數的平方之和 s 1 2 2 2 3 2 n 2 因為 1 2 2 2 3 2 n2 1 2 3 n 2n 1 3 又由於 1 2 3 n n n 1 2,因此得到 1 2 2 2 3 2 n 2 n n 1 2n 1 6 推導過程 有乙個三角形的數字矩陣 12 2 3 3 3 4 4 ...
1757找i個連續自然數累加為N
找i個連續自然數累加為n time limit 2 seconds memory limit 32768 k total submit 391 accepted 260 description 輸入乙個數字n,找出i個連續自然數累加為n的所有和式 i 1 input 整數n output n i個連...