第1课贝贝的交通指挥系统(《聪明人的游戏:信息学探秘.提高篇-2017-06-C++版》)


【问题描述】
    贝贝所居住的城市有很多个交通路口,其中有26个交通路口在上下班高峰期总是塞车,严重影响市民的出行。于是交通管理部门研制了一批机器人交通警察,用它们来专门指挥这26个交通路口,但需要一个自动化的指挥系统来指挥机器人的运作。这个任务交给了贝贝,贝贝的设计如下。
    分别用大写英文字母A、B、…、Z表示这26个路口,并按如下的规则派出这些机器人到交通路口协助指挥交通:
    1.每次派出两名机器人;  
    2.当两名机器人的名字中存在一个相同的字母时,这两名机器人便到对应的交通路口上指挥交通;有多个字母相同时,两名机器人需要按字母的字典顺序到这些路口上巡逻;
    3.当两名机器人的名字中不存在相同的字母时,交警部门的派出指令无效( WuXiao)。
    假设这些机器人的名字全由大写字母组成,请你编一个程序,帮贝贝完成这个交通指挥系统。

【输入格式】jqr.in
    第1行输入第一个机器人的名字(长度不超过250);
    第2行输入第二个机器人的名字(长度不超过250)。
    
【输出格式】jqr.out
    1.当不能派出机器人时,在第一行输出“WuXiao”;
    2.当两名机器人在路口上指挥交通时,在第一行输出“ZhiHui”,第二行输出路口编号;
    3.当两名机器人在路口上巡逻时,在第一行输出“XLuo",第二行输出巡逻的路口数,第三行输出巡逻线路。

https://www.cnblogs.com/kj1501120706/p/7111951.html

#include <bits/stdc++.h>
using namespace std;
string s1,s2;
char a[300];
bool b[26];
int total,len1,len2;
void init()
{
	cin>>s1>>s2;
	total=0;
	len1=s1.size();
	len2=s2.size();
	
	for(int i=0;i<26;i++) 
	{
		b[i]=true;
	}
	for(int i=0;i<len1;i++)
	for(int j=0;j<len2;j++)
	{
		if(s1[i]==s2[j] && b[s1[i]-'A'])
		{
			total++;
			a[total]=s1[i];
			b[s1[i]-'A']=false;
		}
	}
}
 
void swap(char &a,char &b)
{
	int tmp=a;
	a=b;
	b=tmp;
}
void work()
{
	if(total==0) cout<<"WuXiao"<<endl;
	if(total==1)
	{
		cout<<"ZhiHui"<<endl;
		cout<<a[total]<<endl;
	}
	
	for(int i=1;i<total;i++)
	{
		bool p=true;
		for(int j=total;j>i;j--)
		{
			if(a[j]<a[j-1])
			{
				swap(a[j],a[j-1]);
				p=false;
			}
		}
		if(p) break;
	}
	
    if(total>1)
    {
    	cout<<"XLuo"<<endl<<total<<endl;
    	cout<<a[1];
    	for(int i=2;i<=total;i++)
    	{
    		cout<<"-"<<a[i];
		}
	}
}
int main()
{
	init();
	work();
	return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值