贪心算法——一种思想的算法

贪心算法——一种思想的算法,第1张

与其说贪心算法是一种算法,不如说贪心算法是一种思想。

贪心嘛,人的本性,总是想要获得更多的利益,却不会放眼全局,所以贪心算法的思想

就是在眼前选择最优的方案。但是贪心无法顾及全局,所以在做题前,要先用数学确定

是否可以使用贪心。

详见 贪心算法_百度百科 (baidu.com)

接下来给大家看几道题的题解:

1962: 排队接水(经典):
#include
#include
using namespace std;
int n;
double sum;
int tot;
struct a{
    int t;
    int number;
}x[1005];
bool cmp(a x,a b){
    return x.t>n;
    for(int i=1;i<=n;i++){
        cin>>x[i].t;
        x[i].number=i;
    }
    sort(x+1,x+n+1,cmp);
    for(int i=1;i<=n;i++){
        cout<
2048: 金银岛2
#include
using namespace std;
 
int w;
int s;
int ans=0;
int n[100];
int v[100];
void dfs(int t=0,bool sel=0,int sumw=0,int sumc=0){
    if(t>s){
        return;
    }
    if(sel){
        sumw+=n[t];
        sumc+=v[t];
        if(sumw>w){
            return;
        }
        ans=max(ans,sumc);
    }
    dfs(t+1,0,sumw,sumc);
    dfs(t+1,1,sumw,sumc);
}
int main(){
    int t;
    cin>>t;
    while(t--){
        cin>>w>>s;
        for(int i=1;i<=s;i++){
            cin>>n[i]>>v[i];
        }
        ans=0;
        dfs();
        cout<
1044: 【NOIP2002】均分纸牌:
#include
using namespace std;
int sum=0;
int cnt;
int main(){
    int n;
    int a[105];
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        sum+=a[i];
    }
    int avg=sum/n;
    for(int i=1;i<=n;i++){
        int d=a[i]-avg;
        if(d==0){
            continue; 
        }else{
            a[i+1]+=d;
            cnt++;
        }
    }
    cout<

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1498095.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-25
下一篇 2022-06-25

发表评论

登录后才能评论

评论列表(0条)