zoukankan      html  css  js  c++  java
  • P1106删数游戏

    这道题曾经在CQOJ上考过,是第二次做了。

    这是一道使用字符串的贪心题。首先要根据机组例子来确定:删除递增序列的最后一位。即循环找到那一位后,把后面的数往前压。所以我在艰难处理完双重循环后(这个处理不是很顺畅),便卡在了前导零上四次(CQOJ的数据太水)。最后看了下题解,将前导零处理好了,AC。

    1.注意前导零的处理:while到第一个不是零的,如到头,则cout<<"0"

    2.将string在开始时便后移一位,不然别扭

    3.想贪心策略时要多拿几个例子,找到规律

    代码:

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<string>
    #include<algorithm>
    using namespace std;
    bool flag=false;
    string a;
    int s;
    int len=0;
    int i;
    int main(){
        cin>>a;
        cin>>s;
        len=a.length();
        while(s){
            i=0;    
            while(a[i]<=a[i+1]){//停留在递增序列最后一位 
                i++;    
                }     
            while(i<=len-2){//往前压 
                a[i]=a[i+1];
                i++;
            }     
            len--;
            s--;
        }
        i=0;
        while(i<=len-1&&a[i]=='0')i++;//处理前导0 
        if(i==len)printf("0");
        else
            for(int j=i;j<=len-1;j++)
                printf("%c",a[j]); 
    
        return 0;
    }
    待到oi十一月,我花开后百花杀。
  • 相关阅读:
    koa2 中间件里面的next到底是什么
    nodejs 之 nvm和pm2
    javascript瀑布流
    转使用chrome命令行:disable
    MariaDB 用户与授权
    MariaDB TRANSACTION
    IHS .kdb转crt,key
    MariaDB TRIGGER
    MariaDB CURSOR
    MariaDB PROCEDURE
  • 原文地址:https://www.cnblogs.com/china-mjr/p/11210058.html
Copyright © 2011-2022 走看看