您的位置:首页 > 其它

NYOJ-268-荷兰国旗问题-2013年7月25日19:36:52

2013-08-18 14:24 375 查看


荷兰国旗问题

时间限制:3000 ms  |  内存限制:65535 KB
难度:1

描述 
荷兰国旗有三横条块构成,自上到下的三条块颜色依次为红、白、蓝。现有若干由红、白、蓝三种颜色的条块序列,要将它们重新排列使所有相同颜色的条块在一起。本问题要求将所有红色的条块放最左边、所有白色的条块放中间、所有蓝色的条块放最右边。

输入第1行是一个正整数n(n<100),表示有n组测试数据。接下来有n行,每行有若干个由R,W,B三种字符构成的字符串序列,其中R,W和B分别表示红、白、蓝三种颜色的条块,每行最多有1000个字符。
输出对输入中每行上由R,W,B三种字符构成的字符串序列,将它们重新排列使所有相同颜色的条块在一起,满足前述要求。
样例输入
3
BBRRWBWRRR
RRRWWRWRB
RBRW


样例输出
RRRRRWWBBB
RRRRRWWWB
RRWB

# include<stdio.h>
# include<string.h>

int main()
{
int n,i,j,k;
char a[1100],b[1100];

scanf("%d",&n);

for(k=0;k<n;k++)
{
getchar();
scanf("%s",a);

for(i=0,j=0;(size_t)i<strlen(a);i++)
{
if(a[i]=='R')
{
b[j]='R';
j++;
}
}
for(i=0;(size_t)i<strlen(a);i++)
{
if(a[i]=='W')
{
b[j]='W';
j++;
}
}
for(i=0;(size_t)i<strlen(a);i++)
{
if(a[i]=='B')
{
b[j]='B';
j++;
}
}
for(i=0;(size_t)i<strlen(a);i++)
{
printf("%c",b[i]);
}
printf("\n");

}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: