题解&反思(2)
来源:互联网 发布:北海市网络预约车 编辑:程序博客网 时间:2024/05/16 08:17
1. 越越的交通系统
题目描述:分别用大写英文字母A,B,c,…Z表示这26个路口,并按如下的规则派出这些机器人到交通路口协助指挥交通:
1、每次派出两名机器人。
2、当两名机器人的名字中存在一个相同的字母时,这两名机器人便到对应的交通路口指挥交通;有多个字母相同时,两名机器人需要按字母的字典顺序到这些路口巡逻。
3、当两名机器人的名字中不存在相同的字母时,交警部门的派出指令无效(wuxiao)。
【输入】
第一行:输入第一个机器人的名字(长度不超过250);
第二行:输入第二个机器人的名字(长度不超过250)。
【输出】
1、当不能排除机器人时,在第一行输出“WuXiao”.
2、当两名机器人在路口上指挥交通时,在第一行输出“ZhiHui”,在第二行输出路口编号。
3、当两名机器人在路口上巡逻时,在第一行输出“XunLuo”,第二行输出巡逻的路口数,第三行输出巡逻线路。
【输入输出样例1】
traffic.in traffic.out
OPEN XunLuo
CLOSE 2
E-O
【输入输出样例2】
traffic.in traffic.out
EPSON XunLuo
SENPUM 4
E-N-P-S
分析:因为机器人的名字不长,所以可以依次枚举来判断,不会超时。然后只要再进行判断和输出即可,代码如下:
#include<bits/stdc++.h>
using namespace std;
int main()
{
string a,b;
char d[100000],k;
int s=0,sa,sb;
cin>>a;
cin>>b;
sa=a.size();
sb=b.size();
for(int i=0;i<=sa-1;i++)
for(int j=0;j<=sb-1;j++)
{
if((int)a[i]==(int)b[j])
{
s++;
d[s]=b[j];
}
}
for(int i=1;i<=s-1;i++)
for(int j=i+1;j<=s;j++)
{
if(d[i]>d[j])
{
k=d[i];
d[i]=d[j];
d[j]=k;
}
}
if(s==0)
cout<<"WuXiao"<<endl;
else if(s==1)
{
cout<<"ZhiHui"<<endl;
cout<<d[s]<<endl;
}
else
if(s>1)
{
cout<<"XLuo"<<endl;
cout<<s<<endl;
sort(d+1-65,d+s-65);
for(int i=1;i<=s-1;i++)
if(d[i]!=0)
cout<<d[i]<<'-';
cout<<d[s]<<endl;
}
return 0;
}
但这个代码只得了80分,如果将样例改为:
APPLE
APDU
则输出为
XLuo
3
A-P-P
问题也很显而易见了,是因为没有去重(心情咸鱼)。改进后AC,代码为:
#include<bits/stdc++.h>
using namespace std;
int main()
{
string a,b;
bool c['a']={};
char d[10001];
int sum=0,k=0,e;
cin>>a>>b;
for(int i=0;i<a.size();i++)
{
e=b.find(a[i]);
if(e>-1) c[a[i]]=1;
}
for(char i='A';i<='Z';i++)
if(c[i]==1) sum++;
if(sum==0)
cout<<"WuXiao"<<endl;
else if(sum==1)
{
cout<<"ZhiHui"<<endl;
for(char i='A';i<='Z';i++)
if(c[i]==1)
cout<<i<<endl;
}
else
{
cout<<"XLuo"<<endl;
cout<<sum<<endl;
for(char i='A';i<='Z';i++)
if(c[i]==1)
{
k++;
d[k]=i;
if(d[k-1]!=0)
cout<<d[k-1]<<'-';
}
cout<<d[k]<<endl;
}
return 0;
}
而且,用这种方法做,也减少了很多不必要的循环,减少了时间。
2. 久知的加密工作
题目描述:加密的部分是一串小写英文字母,加密的规则是这样的:要是连续出现相同的字母,则把他们替换成这个字母的大写形式,后面紧跟相同字母的个数,并把它之前跟之后的两端字符串调换,例如出现bcmatchingaef,则字符串变成:efA6bc。然后重新扫描字符串,直到没有出现相同小写字母为止。
【输入】
原始字符串(长度不大于250)。
【输出】
新的字符串。
【输入输出样例1】
password.in
password.out
bcmatchingaef
efA6bc
【输入输出样例2】
password.in
password.out
cmmmcefffg
gM3cF3ce
样例2解释:cM3cefffg——cefffgM3c——ceF3gM3c——gM3cF3ce
分析:这题可以用链表来完成,但,无奈的是,我不会啊~但,思路是这样的,将这串字符串的每一个字符与后面的字符进行比较,如有重复,则将小写字母改为大写,前后交换,再进行判断,直到不再有重复的小写字母,输出。(其实就是道强模拟QAQ)
C++的字符操作与Pascal有很大差异,很难受。尤其是滚字符串时清空处理(可能是有函数的,but我不知道啊awa)
(本题不附代码)
- 题解&反思(2)
- 题解&反思(上)
- 题解&反思(下)
- 题解+反思
- 题解+反思
- 光棍节练习赛1、2题题解与反思
- 2017.3.10NOIP模拟赛题解及反思(伪)
- 校赛反思和题解
- 回顾与反思(2)
- 软件工程技术反思(2)
- 反思2
- 2013 长春网络赛 水题题解&反思
- 2017.3.18NOIP模拟赛题解及反思
- 普及组模拟题1、4题题解与反思
- 20171214普及组测试题解与反思1、3
- 自我反思2
- 工作反思2
- 自我反思(2)
- XTU 1159 soldier
- Redis作为消息队列与RabbitMQ的比较
- Pycharm调试器综述
- POJ3251-Big Square (C语言实现)
- 以太坊挖矿教程
- 题解&反思(2)
- maven助力javaweb项目纵向和横向切割
- 在陆家嘴上班是什么体验?
- rabbitMQ、activeMQ、zeroMQ、Kafka、Redis 的比较
- Chapter 1: Python 科学计算环境的安装与简介
- hadoop生态圈 基础知识点
- 技术道路永不停歇
- mysql中的定时任务
- 旷视科技与港科大成立联合实验室,权龙教授引领3D感知技术研究 本文作者:奕欣 2017-12-16 14:53 导语:旷视科技 Face++宣布与香港科技大学建立联合实验室,该实验室由港科大计算