Posted on 2011-11-28 19:11
C小加 阅读(245)
评论(0) 编辑 收藏 引用 所属分类:
解题报告
月赛的一道水题,当时一直WA。后来问别人怎么做的时候发现自己把意思理解错了。
因为给出的位数是固定的,如果你在整个字符串范围内找到最大值后,会发现后边的位数会变的不够。所以找最大值的时候必须考虑到后边的位数足够。
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
const int MAXN=103;
char s[MAXN];
int Search(int l,int r)
{
char c='0';
int pos=l;
for(int i=l;i<=r;i++)
{
if(c<s[i])
{
c=s[i];
pos=i;
}
}
return pos;
}
int main()
{
//freopen("in.txt","r",stdin);
int t;
scanf("%d",&t);
while(t--)
{
char ans[MAXN];
int n;
scanf("%s %d",s,&n);
int sn=strlen(s);
int st=sn-n;
int wos=0;
int i;
for(i=0;i<st;i++)
{
int cos=Search(wos,n+i);
ans[i]=s[cos];
wos=cos+1;
}
ans[i]='\0';
printf("%s\n",ans);
}
return 0;
}