首页 > 其他 > 详细

P1106删数游戏

时间:2019-07-18 22:26:57      阅读:61      评论:0      收藏:0      [点我收藏+]

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

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

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

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

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

伪代码:

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]);

 

P1106删数游戏

原文:https://www.cnblogs.com/china-mjr/p/11210058.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!