天之道

享受编程的乐趣。
posts - 118, comments - 7, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

删数问题

时间限制:1000 ms  |  内存限制:65535 KB
描述

           给出一个N位正整数(首位不为0),去掉其中S个数字后剩下的数字按左右次序组成一个新的N-S位正整数(首位不能为0)。对给定的NS,寻找一种删数规则使得剩下得数字组成的新数最小。

输入

         第一行一个正整数T ,表示有T组测试数据。

        对于每组测试数据:第一行两个正整数 n ,s (s<  n <= 10, 000) (用空格隔开); 第二行为一个n 位正整数。

输出

         对于每组测试数据输出一行:最小的新数。

样例输入
2 10 2 1234334789 11 3 90019008798 
样例输出
12333478 19008798

#include<stdio.h>
#include
<string.h>
int main()
{
    
int n,s,k,i,m;
    
char a[10000];
    scanf(
"%d",&n);
    
while(n--)
    {   
        i
=0;
        scanf(
"%d%d",&m,&s);
        scanf(
"%s",a);
        
while(s>0)
        {
            
while(i<strlen(a) && a[i]<=a[i+1&& a[i]!='0') i++;
            
for(k=i;k<strlen(a);k++)
            {
                a[k]
=a[k+1];
            }
            s
--;
        }
        printf(
"%s\n",a);
    }
    
return 0;

}

Feedback

# re: 删数问题(可惜时间超限,求大神优化!)[未登录]  回复  更多评论   

2013-12-19 20:35 by YOUNG
算法有误,
请测试 11 8 90019008798
答案应为 100。

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理