演算法思想
1. 演算法思想
如果 x 和 y 是被隨機抽掉的那兩個元素,那麼:
x + y = sum
x * y = proct
(sum 和 proct 的值都可以在程序中不違反條件的情況下求出)
解方程組:
x + proct / x = sum
x^2 - sum * x + proct = 0
用公式解決一元二次方程:
x = ( sum + √(sum^2 - 4 * proct) ) / 2
y = sum - x
問題中沒有提及編程語言的限制。我假設 java 是被允許的:
import java.util.*;
import java.math.*;
class C {
public static void main(String[] args) {
final int MAX = 10000;
// 把 ArrayList 當數組用(比較方便且沒違反問題的限制)
List<Integer> problemArray = new ArrayList<Integer>();
for (int i = 1; i <= MAX; i++)
problemArray.add(i);
// 打亂,然後抽去前兩個(等於打亂前隨機抽去兩個)
Collections.shuffle(problemArray);
System.out.println("隨機抽去的兩個數是 " + problemArray.remove(0) +
" 和 " + problemArray.remove(0));
/*
* 五個變數的限制現在開始(MAX 是常量所以不算)
*/
int sum = 0;
BigInteger proct = BigInteger.ONE;// 10000 的階乘遠遠超出 int 的范圍
// 計算 1 到 MAX 的和與積
for (int i = 1; i <= MAX; sum += i++)
proct = proct.multiply(BigInteger.valueOf(i));
// 遍歷問題數組一遍(計算被抽去的兩個數的和與積)
for (int i = 0; i < MAX - 2; sum -= problemArray.get(i++))
proct = proct.divide(BigInteger.valueOf(problemArray.get(i)));
// 一元二次方程用公式解決
int x = (sum + (int) Math.sqrt(sum * sum - 4 * proct.intValue())) / 2;
System.out.println("計算結果:被抽去的兩個數是 " + x + " 和 " + (sum - x));
}
}
2. DDA演算法的演算法思想
直線的基本微分方程為: 。
設直線通過點 和 ,則直線方程可表示為: 。
如果已知第 點的坐標,可用步長 和 得到第 點的坐標為:
或
如下圖:
將算得的直線上每個點的當前坐標,按四捨五入得到光柵點的位置。
3. 動態規劃演算法的基本思想是什麼
DP一定有狀態,而貪心只是說這個題目最有滿足什麼條件就能得到最優解的情況
一般DP必須得求出他的狀態和轉移方程
4. 統計演算法的思想是什麼
比如說統計字元個數嗎?
演算法是基於基本邏輯的,統計學不是僅僅像其表面的文字表示,只是統計數字,而是包含了調查、收集、分析、預測等,應用的范圍十分廣泛。
用於統計的演算法的思想當然是統計學啊,一直++,也算。
要不你舉個具體例子來分析思想。
5. 演算法思想是什麼
演算法的思想是解決問題
6. 演算法是編程思想嗎
演算法+代碼=程序,演算法是程序設計的靈魂,也就是你所說的編程思想
7. 散列演算法的演算法思想
我也只能說說思想
散列演算法的演算法就是爭取一個蘿卜一個坑的原則
比如說有5個數 12,25,30,45,50,這幾個數有個規律,就是十位數都不相同,
如果我設置一個散列函數f(value)=value/10;平常的時候,我們查找50,要比較
5次(其他演算法可能不同),這里用散列演算法只需要1次,就是解散列函數,key=50/10
=5,要找的數就在第5個位子.但是上面問題還是很多的,比如說查找55呢?就會出
錯<因為55解散列函數之後,也是在第5個位子>,還有等等等問題,很顯然這個是我
散列函數沒設置好,當你把散列函數設置好了後,由於數據的龐大,沖突很有可能
產生,那麼就需要我們來處理沖突了,所以寫散列演算法就是設置好的散列函數和
處理沖突的過程.這里散列演算法涉及的查找就跟查找的數量無關,跟沖突率有直接
的關系
8. 什麼是演算法構造演算法的基本思想是什麼
1順序結構
按從上到下的順序進行
2選擇結構
根據條件作判斷,再決定執行哪一種操作的演算法結構
必須包含判斷框
3循環結構
9. 選擇排序演算法的思想是什麼
選擇排序=選擇最小放前面