AOJ191 删除数字
来源:互联网 发布:软件的质量标准 编辑:程序博客网 时间:2024/06/06 16:36
Description
对给定的N位高精度正整数,去掉其中的k个数字后,使剩下的数字构成的整数最大。
Input
输入第1行为一个整数L
后面L行的每一行包括一个长度为N的高精度正整数和需要去掉的数的个数k。(1 <= N <= 1000 , 1 <= k < N)
后面L行的每一行包括一个长度为N的高精度正整数和需要去掉的数的个数k。(1 <= N <= 1000 , 1 <= k < N)
Output
输出每一行表示每个高精度正整数去掉相应的k个数字后构成的新的最大正整数。
Sample Input
212345 154321 2
Sample Output
2345543
思路:用字符串储存数字,按顺序查找,若后一个元素比当前元素大,删除当前元素,若找不到此类元素,把最后一个元素删除
参考代码:(我是用链表做的,第一次用链表做题,删除数据方便)
#include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct Node{ char data; Node *next; }Node; Node *creat()//构建链表 { Node *p; p=new Node; p->next=NULL; return p; } int del(Node *head)//删除数字 { Node *p=head; Node *s; s=p; p=p->next; while(p->next!=NULL) { if((p->data)<(p->next->data)) { s->next=p->next; } p=p->next; s=s->next; } s->next=NULL; return 0; } int display(Node *head)//打印链表 { Node *p=head; while(p->next!=NULL) { p=p->next; printf("%c",p->data); } puts(""); return 0; } int del_p(Node *head)//释放内存 { Node *p=head; Node *s; p=p->next; while(p->next!=NULL) { s=p->next; delete p; p=s; } return 0; } char c[1111]; int main() { int l,k; int i=0; Node *p; Node *head=new Node; p=head; scanf("%d",&l); while(l--) { p=head; i=0; scanf("%s%d",c,&k); if(strlen(c)<=k) { printf("\n"); continue; } while(c[i]!='\0') { p->next=creat(); p=p->next; p->data=c[i]; i++; } while(k--) { del(head); } display(head); del_p(head); } return 0; }
0 0
- AOJ191 删除数字
- 删除数字
- 删除数字
- 删除数字
- 删除数字
- 删除数字
- 删除数字
- [java]间隔删除数字
- 删除字符串中的数字
- C 语言 数字删除
- 字符串删除数字
- 题目:删除数字
- lintcode-删除数字-182
- lintcode 删除数字
- 删除重复数字,java
- 删除数字vba
- LintCode 182-删除数字
- LintCode :删除数字
- AOJ10 目标柏林
- Objective-C中的instancetype和id关键字
- Eclipse导入项目:No projects are found to import
- AOJ158 有假币
- AOJ298 Rings of square grid
- AOJ191 删除数字
- Delphi XE 2 精简版在 Windows 8.1 64 位中的安装
- AOJ437 高精度加法
- IOS学习笔记(七)之UISegmentedControl分段控件的基本概念和使用方法
- AOJ194 猴子分桃
- AOJ331 汉诺塔
- AOJ574 爱就大声说出来
- AOJ152 A X B problem(大数相乘、高精度乘法)
- 网卡驱动10-做一个与外界交互的虚拟网卡6(突发奇想!搞个网络鼠标!)