题目地址:http://jobdu.sinaapp.com/problem.php?pid=1485
提供组测试数据:
3 0 0
ab
C语言源码:
#include<stdio.h>
#define maxsize 10000
char S[maxsize];
int s1[maxsize],s2[maxsize],s3[maxsize],top1,top2,top3;
void change(int stack[],int n,int k)
{
int i,j,temp;
char c;
for(j=1;j<=k;j++)
{
c=S[stack[0]];
for(i=n-1;i>0;i--)
{
if(i==n-1)
S[stack[0]]=S[stack[i]];
else
S[stack[i+1]]=S[stack[i]];
}
S[stack[1]]=c;
}
}
int main()
{
int k1,k2,k3,i;
while(1)
{
scanf("%d %d %d",&k1,&k2,&k3);
if(k1==0&&k2==0&&k3==0)
break;
scanf("%s",S);
top1=0;
top2=0;
top3=0;
for(i=0;S[i]!='\0';i++)
{
if(S[i]>='a'&&S[i]<='i')
s1[top1++]=i;
else
if(S[i]>='j'&&S[i]<='r')
s2[top2++]=i;
else
if((S[i]>='s'&&S[i]<='z')||S[i]=='_')
s3[top3++]=i;
}
change(s1,top1,k1);
change(s2,top2,k2);
change(s3,top3,k3);
printf("%s\n",S);
}
}