文章給自己看的,**是在qt工程中截出來的
double
equation
(doublex)
return(z);
}
/*引數意義:
a要求的根的下界
b要求的根的上界,即:所求的根落在區間
[a,b]之內
h遞進的步長
eps精度
x根的值
m預計的根的個數*/
intbinsearchroot
(doublea,
doubleb,
doubleh,
double
eps,
doublex,
intm
)/*用二分法計算非線性方程的實根*/
else
/*當前點不是方程的根*/
else
if(y*y1>
0.0)
/*該區間內無根*/
else
/*該區間內有根*/
else
/*區間比給定的精度大,則進行二分*/
else
if((y*
y0)<
0.0)
/*[z,z0]內有根*/
else
}
}
}
}
}
return(n);/*返回根的個數*/
}
n=binsearchroot
(-500.0
,500.0
,0.2
,0.000001,x
,m); //在主函式中呼叫此語句,實參對應的意義在上面寫過了,步長的確定一般可以為0.5,此處為了保險設定為0.2,x是開的乙個存根的double陣列,最後輸出就顯而易見了
二分簡單入門
參考文章 二分.1.最大化最小值 相當於n個東西分給m個人,使得每個人 至少拿x個 那麼每個人拿夠了 就走,給後面的人多留一點,只要能分夠 m個人 就是true,多的全 扔給最後乙個人就是了.2.最小化最大值 相當於n個東西分給m個人,每個人 至多能拿x個 那麼每個人盡可能 多拿一點,給後面的人少留...
利用二分思想來尋求解
1.長城守衛 beijing guards,cerc 2004,la3177 n 個人圍成乙個圈,其中第 i i 個人想要有 riri 個不同的禮物。相鄰的兩個人可以聊天,炫耀自己的禮物。5 個人,每個人都要乙個禮物,則至少要 3 3 種禮物。如果把這 3 3 種禮物編號為 1,2 31,2,3 則...
E簡單二分查詢
簡單二分查詢 面對二分查詢,主要是你的思路 第一步 你得把陣列有序的排列,一般選擇從小到大。第二步 把l,r,m確定下來。然後看看你得key 如果,key m,你運氣太好一下子就找到了 如果,key如果,key m,此時你考慮在你的右邊找。從小到大排列為例 第三步 迴圈著,就看你的結束條件了,當然了...