码迷,mamicode.com
首页 > Windows程序 > 详细

uva11491 Erasing and Winning

时间:2018-10-05 19:44:40      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:i++   getch   str   处理   turn   cst   lib   space   cstring   

边读入边处理 优化了速度
一开始有想错了的地方。处理输入有点想用stringstream, 的问题在于他把字符串连续的数字作为一个整体,遇到空格才分开,所以不适用

#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<sstream>
#include<cstring>
using namespace std;

const int maxn = 100005;
int s[maxn];
 
int main()
{
    int n, d;
    while (scanf("%d%d%*c", &n, &d) && n) {
        int t = 0;
        int a;
        d = n - d;
        for (int i = 0; i < n; i++) { //位数相同,贪心策略为最高位最大
            a = getchar() - 0;
            while (t && t + n - i > d && a > s[t - 1]) {
                t--;
            }
            if (t < d) {
                s[t++] = a;
            }
        }
        for (int i = 0; i < t; i++) {
            printf("%d", s[i]);
        }
        printf("\n");
    }
 
    return 0;
}

 

uva11491 Erasing and Winning

标签:i++   getch   str   处理   turn   cst   lib   space   cstring   

原文地址:https://www.cnblogs.com/lqerio/p/9745604.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!