1.你对贪心算法的理解
贪心算法就是局部最优解,要确认问题是否具有贪心选择性质。难度较低,易于上手,但大部分情况不适用。
2.请选择一道作业题目说明你的算法满足贪心选择性
4-2 删数问题 (110分)
给定n位正整数a,去掉其中任意k≤n 个数字后,剩下的数字按原次序排列组成一个新 的正整数。对于给定的n位正整数a和正整数 k,设计一个算法找出剩下数字组成的新数最 小的删数方案。
输入格式:
第 1 行是1 个正整数 a。第 2 行是正整数k。
输出格式:
输出最小数。
输入样例:
在这里给出一组输入。例如:
178543
4
输出样例:
在这里给出相应的输出。例如:
13
#include<bits/stdc++.h> using namespace std; #define ll long long string s; int a[10005]; int k; int main() { cin >>s; cin >>k; int len = s.size(); int i, j; for (int i=0; i<len; i++) a[i] = s[i]-48; for (int n=0; n<k; n++) { 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--; } i = 0; while (i<=len-1 && a[i]==0) i++; // 快进到开头不是0 if (i == len) cout <<0 <<endl; else for(j=i; j<=len-1; j++) cout <<a[j]; return 0; }
3.请说明在本章学习过程中遇到的问题及结对编程的情况
问题:适用性太窄,上限较低
结对编程:互相carry