hdu 3183 A Magic Lamp(给一个n位的数,从中删去m个数字,使得剩下的数字组成的数最小(顺序不能变),然后输出)...

1. 题目大意是,给你一个1000位的数,要你删掉m个为,求结果最小数。

思路:在n个位里面删除m个位。也就是找出n-m个位组成最小数

所以在区间 [0, m]里面找最小的数。相应的下标标号i

接着找区间 [i+1,m++]里面的最小数。对于下标为ii

接着找区间 [ii+1,m++]里面的最小数……

这样就会找n-m个数了。区间这样安排的目的是为了保证取出来的数的顺序。


2代码:

#include
#include
#include
#define Min(a,b) ((a)<(b)?(a):(b))
using namespace std;

char s[10005];
int a[10005];
int an[10005];
int ST[10005][20];
int n,m;

void make_ST()//记录的是最小值的下标
{
    for(int j=1; (1<=temp)
            printf("0\n");
        else
        {
            for(int i=t; i


转载于:https://www.cnblogs.com/gavanwanggw/p/7190053.html

你可能感兴趣的:(hdu 3183 A Magic Lamp(给一个n位的数,从中删去m个数字,使得剩下的数字组成的数最小(顺序不能变),然后输出)...)