C 演算法篇 貪心習題答案

2021-10-23 16:24:17 字數 1399 閱讀 9534

思路暴力模擬。

我們定義乙個陣列:a[i],表示第 i 個水龍頭目前的總時間。

1、每次輸入乙個數就加入第乙個水龍頭。

2、然後從小到大排序。所以a[0]j 每次都是時間最小的那個水龍頭 。

3、重複1,2。

4、最後輸出時間最長的水龍頭。

voctor版

#includeusing namespace std;

int main()

cout《陣列版

#includeusing namespace std;

int main()

;//有m個水龍頭,初始沒人,時間總和為0

int b;

for(int i=0;i>b;//讀入資料

a[0]=a[0]+b;//資料加進時間總和最少的水龍頭裡

sort(a,a+m);//快排,剛好從小到大

}cout《這道題是乙個貪心題,讀入之後先用sort排序,然後用兩個指標一起向中間走,每次選擇都盡可能的讓當前狀態下最大的和最小的分在一組,如果不行就最大的單獨分一組,這樣貪心下來就是最少分的組了。

#includeusing namespace std;

int w,ans=0;

int n,a[30001];

int l,r,i;

int main()

printf("%d",ans);

return 0;

}

貪心策略:每當我們掃到乙個數,如果它大於前乙個數答案就加上差值,正確性?

這是比較顯然的,如果比前乙個數小,那麼減前乙個數時就可以順便把他減掉,如果大於則還得自己減。

#include using namespace std;

int main()

coutint main()

cout<這個題最關鍵的是貪心的思想,想明白了**實現應該就沒有問題了

因為每堆牌只能移到相鄰的堆,不妨一堆堆處理,且只考慮後一堆(因為前一堆已經處理好了,再移動會造成浪費)。

那麼如果出現了負數呢?如1,1,7的情況,從左到右處理過程如下:

1,1,7

-2,-2,4

0,-4,4

0,0 ,0

#includeusing namespace std;

int a[10010];

int n;

int sum=0,x=0,to1=0;

int main()

x=sum/n;

for(int i=1;i<=n;i++) a[i]=a[i]-x;

for(int i=1;i<=n;i++)

cout

}

大資料演算法習題答案

13章 1.神經網路由許多神經元 neuron 組成,每個神經元接受乙個輸入,處理它並給出乙個輸出。下列關於神經元的陳述中正確的是 上述都對 2.在乙個神經網路裡,知道每乙個神經元的權重和偏差是最重要的一步。如果以某種方法知道了神經元準確的權重和偏差,你就可以近似任何函式。實現這個最佳的辦法是 賦予...

貪心演算法 附貪心相關習題

定義 貪心演算法是一種求解最優解的方法。它是按照某種最優策略,將複雜問題層層分解成子問題 每次一般只有乙個 並求子問題的最優解得到整個問題的最優解。貪心演算法並不是從整體上考慮問題,它所做出的選擇只是在某種意義上的區域性最優解。在每個子問題的選擇中只選擇區域性最優解,從而達到全域性最優解的一種演算法...

提高篇 貪心演算法

在新的一本書中又開始了對貪心演算法的學習。此次學習中主要學習應用的部分是區間貪心。在這一部分貪心的目的是要求區間利用的最大化,例題來說主要解決的方法便是盡可能的選擇耗費時間少的區間,但在貪心時,如果有規律可循,那麼只要區間時間不重合排列那麼就是可以的。同樣貪心對每個題的演算法都不同,更多的還是自己適...