您的位置:首页 > 其它

九度论坛--上机题1032:ZOJ

2014-01-22 00:29 218 查看

1032: ZOJ

时间限制: 1Sec 内存限制: 32 MB

提交:162 解决: 102

题目描述

读入一个字符串,字符串中包含ZOJ三个字符,个数不一定相等,按ZOJ的顺序输出,当某个字符用完时,剩下的仍然按照ZOJ的顺序输出。

输入

题目包含多组用例,每组用例占一行,包含ZOJ三个字符,当输入“E”时表示输入结束。

1<=length<=100。

输出

对于每组输入,请输出一行,表示按照要求处理后的字符串。

具体可见样例。

样例输入

ZZOOOJJJ
ZZZZOOOOOJJJ
ZOOOJJ
E


样例输出

ZOJZOJOJ
ZOJZOJZOJZOO
ZOJOJO


提示

来源

2009年浙江大学计算机及软件工程研究生机试真题



#include <iostream>

#include <string>

using namespace std;

char min_size(int size_z,int size_o,int size_j);

int main()

{

string str;

int length;

while(cin>>str)

{

if(str =="E")

break;

string str_z,str_o,str_j;

int size_z,size_o,size_j;



size_z=size_o=size_j = 0;

length = str.size();

int i;

for(i=0;i<length;i++)

{

if(str[i] =='Z')

{

str_z+=str[i];

}

elseif(str[i] == 'O')

{

str_o+=str[i];

}

else

{

str_j+=str[i];

}

}

size_z = str_z.size();

size_o = str_o.size();

size_j = str_j.size();

int n ,index;

switch(min_size(size_z,size_o,size_j))

{

case 'Z':

{

n=size_z;

break;

}

case 'O':

{

n= size_o;

break;

}

case 'J':

{

n= size_j;

break;

}

default:

break;

}

for(index=0;index<n;index++)

{

cout<<str_z[index]<<str_o[index]<<str_j[index];

}

while(index <size_z || index < size_o || index <size_j)

{

if(index<size_z)

cout<<str_z[index];

if(index<size_o)

cout<<str_o[index];

if(index<size_j)

cout<<str_j[index];

index++;

}

cout<<endl;

}

//cin>>str;

//cout<<str<<endl;



return 0;

}

char min_size(int size_z,int size_o,int size_j)

{

int tem;

char flag ;

if(size_z <size_o)

{

tem = size_z;

flag = 'z';

}

else

{

tem = size_o;

flag = 'o';

}

if(size_j < tem)

return 'J';

else

{

if(flag == 'z')

return'Z';

else

return'O';

}

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