最小新整数(贪心算法)

描述

给定一个十进制正整数n(0 < n < 1000000000),每个数位上数字均不为0。n的位数为m。

现在从m位中删除k位(0< k < m),求生成的新整数最小为多少?

例如: n=9128456,k=2,则生成的新整数最小为12456。

格式

输入格式

第一行t, 表示有t组数据; 接下来t行,每一行表示一组测试数据,每组测试数据包含两个数字n,k。

输出格式

t行,每行一个数字,表示从n中删除k位后得到的最小整数。

样例

输入样例

9
9126845 2
1444 3
418 1
948576 3
258369147 5
7539518246 5
777888999 5
999888777 5

输出样例

12645
1
18
456
2147
18246
15246
7778
8777

限制

时间限制: 1000 ms

内存限制: 65536 KB

题目的做法和删数问题基本一个意思。

注意进入删数的条件if (ans[k] > ans[k+1]) ,不能写成if (ans[k] >= ans[k+1]) ,举个数据例子来说:777888999删5个后正确答案是7778而不是7899,自己体会下。

#include
using namespace std;

int main()
{
	int t, m, ans[55];
	string n;
	scanf ("%d", &t);
	for (int i=0; i> n;
		scanf ("%d", &m);
		int l=n.length();
		for (int j=0; j ans[k+1]) {
					for (int p=k; p

 

你可能感兴趣的:(#贪心,数据结构与算法,C/C++)