算法第四章作业

  1. 你对贪心算法的理解:贪心算法就是解决问题的时候找出最优的策略(局部最优即可),通过反证找到最优策略
  2. 请选择一道作业题目说明你的算法满足贪心选择性质:删数问题
  3. #include <iostream>
    #include<algorithm>
    #include<string>
    #include<bits/stdc++.h>
    using namespace std;
    int main() {
        string a;
        int n,i,j,k;//
        cin>>a;
        cin>>n;
        int len=a.size();
        for(k=0;k<n;k++)//控制循环次数 
        {
            for(i=0;i<len-1;i++) 
            {
                if(a[i]>a[i+1])//删数 
                {
                    for(j=i;j<len-1;j++)
                        a[j]=a[j+1];
                    break;
                }
            }
            len--;//不管怎样,长度都会小一,比如123456这种情况,上面的是无法满足的 
        }
        i=0;
        while(i<=len-1&&a[i]=='0')
            i++;
            
        if(i==len)
            cout<<"0"<<endl;
        else
            for(j=i;j<=len-1;j++)
                cout<<a[j];
        return 0;
    }
    

      问题解决关键:遍历数组是通过比较找到高位的较大数,然后删除。

  4. 请说明在本章学习过程中遇到的问题及结对编程的情况:初学会场安排时比较懵逼,打多了几道题之后感觉这个贪心算法还挺好用的。

posted on 2020-11-14 14:23  ouyuanyu  阅读(155)  评论(0编辑  收藏  举报

导航