首页 > 学院 > 开发设计 > 正文

删数问题

2019-11-11 03:55:59
字体:
来源:转载
供稿:网友

删数问题 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic PRoblem Description

键盘输入一个高精度的正整数n(≤100位),去掉其中任意s个数字后剩下的数字按照原来的左右次序组成一个新的正整数。编程对给定的n与s,寻找一种方案,使得剩下的数字组成的新数最小。 Input

输入有多组 每组包括原始数n,要去掉的数字数s; Output

输出去掉s个数后最小的数 Example Input

178543 4 Example Output

13 Hint

#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){ int i = 0,len; int s; char a[101]; while(~scanf("%s %d",a,&s)){ len = strlen(a); if(s>=len){ printf("0/n"); break; } while(s){//贪心一手 i = 0; len = strlen(a); while(i<len&&a[i]<=a[i+1])//只要后一个比前一个大就不往后走 i++; while(i<len){//直接把那个比前一个大的吞掉 a[i] = a[i+1]; i++; } s--; } i = 0; while(a[i]=='0')//这里是去除前导为0的情况 i++; int j = 0; while(i<len){ a[j] = a[i]; i++; j++; } if(a[0]=='/0'){//如果全部都是0的话,直接输出0 printf("0/n"); break; } printf("%s/n",a); } return 0;}
上一篇:PAT BASIC 1007

下一篇:MySQL主从设置

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表