HDU-ACM课堂作业 我要最小整数

思路:遍历数字中每个元素,当前元素大于右边的元素时将其删去。每当完成一个删除操作时将 从头开始遍历。

#include <iostream>
#include <stack>
#include <cstdlib>
#include <cstring>
#include<algorithm>
#include<math.h>
#include<queue>
using namespace std;

int main()
{
    while(1)
    {
        char str[31];
        scanf("%s", str);
        int de;
        cin>>de;
        int len=0;
        for(int i=0;str[i];i++)
            len++;
        if(de==len)
        {
            cout<<0<<endl;
            continue;
        }
        int i=0;
        //共删除de个元素
        while(de)
        {
            //左边元素大于右边
            if(str[i]>str[i+1])
            {
                //将所有元素往前一位
                for(int k=i;k<len;k++)
                {
                    str[k]=str[k+1];
                }
                len--;
                i=0;
                de--;
            }
            //如果正常就进入下一个元素
            else
            {
                i++;
            }
        }
        for(int i=0;i<len;i++)
            cout<<str[i];
        cout<<endl;
    }
}

 

posted @ 2019-01-03 13:58  图袋鼠  阅读(108)  评论(0编辑  收藏  举报