【删数问题贪心算法解决】
2021/11/30 17:08:58
本文主要是介绍【删数问题贪心算法解决】,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
算法与设计基础
键盘输入一个高精度的正整数n,去掉任意s个数字后剩下的数字按原左右次序将组成一个新的正整数。编程对给定的n和s,寻找一种方案,使得剩下的数最小。 如输入: 178543 4 输出: 13
#include;
#include;
using namespace std;
int shanshu(char *a,int k) {
int n = strlen(a);
while (k > 0) {//每次删一个数,使得剩下的数按原序列组成最小。,
for (int i = 0; i < n; i++) {
if (i == n - 1) {
n–;
break;
}//没找到那个单调递减的第 一个数,就删掉非递减序列的最后一个数。
else if (a[i] > a[i + 1]) {
for (int j = i; j < n - 1; j++) {
a[j] = a[j + 1];//删掉一个,后面的全部前移一位。
}
n–;//长度减一
break;
}
}
k–;
}
return n;
}
int main() {
char* input = new char();//char类型数组
printf(“输入数字”);
cin >> input;
//cout << input[1];是一个数组。
//cout << strlen(input);可以这样获得长度:strlen
int k;
printf(“要删除几位数”);
cin >> k;
int m = shanshu(input, k);
//int b = 0;
//while((b<(m-1))&&(input[b]==‘0’))b++; //注意是char,所以不能是0,一定是’0’。
//处理上述注意的情况,即002这种情况
for (int i = 0; i < m; i++) {
cout << input[i];
}
system(“pause”);
return 0;
}
这篇关于【删数问题贪心算法解决】的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)