算法第四章作业
- 你对贪心算法的理解:贪心算法就是解决问题的时候找出最优的策略(局部最优即可),通过反证找到最优策略
- 请选择一道作业题目说明你的算法满足贪心选择性质:删数问题
-
#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; }
问题解决关键:遍历数组是通过比较找到高位的较大数,然后删除。
- 请说明在本章学习过程中遇到的问题及结对编程的情况:初学会场安排时比较懵逼,打多了几道题之后感觉这个贪心算法还挺好用的。