n자리 숫자를 제시하고 그 중 k자리 숫자를 삭제해서 나머지 숫자로 구성된 숫자를 최대한 크게 해야 한다.

이 문제는 단조롭게 증가하는 읽기 한 수를 삭제하는 것이다.
코드는 다음과 같습니다.
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define pi acos(-1)
#define For(i, a, b) for(int (i) = (a); (i) <= (b); (i) ++)
#define Bor(i, a, b) for(int (i) = (b); (i) >= (a); (i) --)
using namespace std;
typedef long long ll;
const int maxn = 100 + 10;
const int INF = 0x3f3f3f3f;
const double EPS = 1e-10;
const ll mod = 1e9 + 7;

inline int read(){
    int ret=0,f=0;char ch=getchar();
    while(ch>'9'||ch='0') ret=ret*10+ch-'0',ch=getchar();
    return f?-ret:ret;
}
char a[maxn];
int n, k;
int main(){
	ios::sync_with_stdio(false);
	cin >> n >> k;
	string s;
	for(int i = 0; i < n; i++){
		cin >> a[i];
		s += a[i];
	}
	if(k == n)cout << 0 << endl;
	else{
		while(k){
			int i;
			for(i=0; i < s.size()-1&&s[i] >= s[i + 1];i++);
			s.erase(i,1);
			k--;
		}
		cout << s << endl;
	}
	return 0;
}

계속 노력하여 자신을 충실하게 하다.

좋은 웹페이지 즐겨찾기