第14題:在我的電腦上能夠執行,因為double是有精度限制的,當a=103時,執行10次就會停止了。
#include#include#includeusing namespace std;
int main()
{ double a=103;
double x=1.0;
double newx=0;
int i=0;
while(1)
{ cout<
看到結果我是徹底給跪了,我還以為程式寫錯了,然後把兩個結果比較了一下,就是那個0.0000001的門限,結果是沒有錯誤。不知道c++裡是怎麼寫的sprt,根本不像是《程式設計珠璣》裡寫的,庫函式已經特別快了,或許是因為《程式設計珠璣》畢竟是在上世紀80年**的書,庫函式已經被優化了30多年了吧。如下是**和結果:
#include#includeusing namespace std;
double distanceeuclid(double p,double q)
{ p=abs(p);
q=abs(q);
if(p0.0000001)
cout<
程式設計珠璣第14章
這裡把所有關於堆的操作寫出來。當做標程吧。include include define ms 1025 typedef struct heap heap heap h static void shift heap h,int i else break a i t static void increa...
部分排序 《程式設計珠璣 續 》第15章
部分排序演算法 要排序陣列中第k1個元素到第k2個元素,先用類快排演算法找出第k1和第k2個元素,演算法見以前部落格 陣列中第k個數 程式設計珠璣 續 第3章 此時,k1到k2中的元素雖然未排序,但是任何乙個元素都比k1個元素大比k2個元素小。注意如果有相同的元素的特殊情況!然後用快排排序k1到k2...
程式設計珠璣第12章
正文 如何生成0 n 1內的m個隨機整數 1 方法一 比如要從5個數里選出2個數,第乙個數的概率是2 5,第二個數的概率是1 4,然後是0 3 那麼現在已經很清楚了。可以寫 如下 for int i 0 i n i if rand n i m 2 方法二 可以用乙個set,每生成乙個隨機,就去set...