题目链接:
UVALive 6555 Playing Fair with Cryptography
题意:
先给出一行字符,可能有空格,标点符号,数字,大小写英文字母等,按照英文字母出现的顺序建立一个5行5列的大写英文字母表格,
(I和J占同一格子,且输入保证不会有J或j)然后第二行也是同样的输出,对于每相邻两个英文字母按照题目中的要求在表中找到相应的英文字母输出。
分析:
一定要仔细读题,全是细节!

#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <ctype.h>
#include <algorithm>
#include <stdlib.h>
using namespace std;int T,cases=0;
char c,cc,mapp[10][10];
int vis[30],col[30],row[30],vvis[30][30];void fun(char a,char b)
{int ra=row[a-'A'],ca=col[a-'A'];int rb=row[b-'A'],cb=col[b-'A'];if(ra==rb){printf("%c%c",mapp[ra][(ca+1)%5],mapp[rb][(cb+1)%5]);}else if(ca==cb){printf("%c%c",mapp[(ra+1)%5][ca],mapp[(rb+1)%5][cb]);}else{printf("%c%c",mapp[ra][cb],mapp[rb][ca]);}
}
int calc(int i)
{int t=i;t=(t+1)%26;if(t==9) t++;//A相当于0,那么J相当于9,如果是9就再跳过return t;
}
int main()
{freopen("in.txt","r",stdin);scanf("%d",&T);while(T--){memset(vis,0,sizeof(vis));vis[9]=1;memset(vvis,0,sizeof(vvis));int read_end=0,first=1;for(int i=0;i<5;i++){for(int j=0;j<5;j++){while(1){scanf("%c",&c);if(first==1){//读到的第一个字符是上一行的换行符first=0;if(c=='\n') continue;}if(isalpha(c)){//直到读到没被用过的英文字母或者换行符时才退出c=toupper(c);if(!vis[c-'A']) break;}else if(c=='\n') break;}if(c=='\n'){read_end=1;break;}vis[c-'A']=1,row[c-'A']=i,col[c-'A']=j;//记录字母已经出现和字母所在行列mapp[i][j]=c;vvis[i][j]=1;}if(read_end==1) break;}int ind=0;for(int i=0;i<5;i++){for(int j=0;j<5;j++){if(vvis[i][j]==1) continue;//已经有过字母了,就跳过while(vis[ind]){//依次找到没被用过的字母ind++;}mapp[i][j]='A'+ind;row[ind]=i,col[ind]=j;//记录字母行列ind++;}}ind=0;printf("Case %d: ",++cases);int flag=1;first=1;while(1){if(flag==1){//用于判断是否读入两个相同的字母,如果相同,那么下次只要读入一个字母while(1){scanf("%c",&c);if(first==1){first=0;if(c=='\n') continue;//读到的第一个字符是上一行的换行符}if(isalpha(c)||c=='\n') break;//直到读到英文字母或者本行结束跳出读入}if(c=='\n') {printf("\n");break;}c=toupper(c);}while(1){//读第二个字母scanf("%c",&cc);if(isalpha(cc)||cc=='\n') break;}if(cc=='\n'){//第二个字母读到换行符但是仍需处理读到的第一个字母if(c=='A'+ind) ind=calc(ind);fun(c,'A'+ind);printf("\n");break; }cc=toupper(cc);if(cc==c){//第一个字母和第二个字母一样if(c=='A'+ind) ind=calc(ind);//第一个字母和替代字母一样fun(c,'A'+ind);ind=(ind+1)%26;//已经用过的替代字母就不能再用了!这里我WA了6发!c=cc;flag=0;//下次就不用读第一个字母了}else {flag=1;//两个字母不一样fun(c,cc);}}}return 0;
}

UVALive 6555 Playing Fair with Cryptography(细节处理)相关推荐

  1. 中国海洋大学第四届朗讯杯高级组 Playing Fair with Cryptography

    Playing Fair with Cryptography Time Limit: 1000MS    Memory limit: 65536K 题目描述 Encryption is the pro ...

  2. 微小宝公众号排行榜_微小说免费阅读网公众号大全推荐资源网

    小说免费阅读|免费小说在线阅读|免费小说资源|小说公众号推荐|免费小说全集|免费小说公众号|小说免费阅读叶辰萧初然|霸道总裁|先生是谁 towed away at the foot of our be ...

  3. 模拟扑克牌大小软件_扑克与软件工程

    模拟扑克牌大小软件 by Jeff Meyerson 杰夫·梅耶森(Jeff Meyerson) 扑克与软件工程 (Poker and Software Engineering) As a poker ...

  4. 《穷爸爸富爸爸》 —— 罗伯特访问记录

    思维方式决定人生轨迹 Do the rich people cringe and say "Don't tell them that. Robert!". 富人们肯定会焦虑地说,& ...

  5. UVALive - 3231 Fair Share(最大流+二分)

    题目链接:点击查看 题目大意:给出n个处理器和m个任务,每个任务给出可以运行的两个处理器,只需要其中一个处理器完成即可, 问如何分配处理方案,能使得n个处理器中处理任务最多的处理器所处理的任务最少 题 ...

  6. CVPR 2022 | ConvNeXt - FAIR再探纯卷积结构的极限(优于Transformer)

    作者| cocoon 编辑| 3D视觉开发者社区 前言 FAIR又出新作了!一篇<2020年代的卷积网络>的横空出世,让国内外CV圈的眼光都聚焦于此,不少大牛都纷纷下场参与讨论.研究团队以 ...

  7. 经典重温:FAIR提出SlowFast,用双分支非对称网络处理不同采样率的视频!代码开源!...

    关注公众号,发现CV技术之美 本文分享论文『SlowFast Networks for Video Recognition』,FAIR提出<SlowFast>,用双分支非对称网络处理不同采 ...

  8. matlab fair,matlab练习程序(加权最小二乘)

    起本篇题目还是比较纠结的,原因是我本意打算寻找这样一个算法:在测量数据有比较大离群点时如何估计原始模型. 上一篇曲面拟合是假设测量数据基本符合均匀分布,没有特别大的离群点的情况下,我们使用最小二乘得到 ...

  9. Spring Cloud Config服务端配置细节(二)之加密解密

    在微服务架构中,由于独立的服务个数众多,加上前期测试工作量大,一些原本由运维人员维护的敏感信息会被我们直接写在微服务中,以提高开发效率,但是这种明文存储方式显然是非常危险的,所以我们要对这些信息进行加 ...

最新文章

  1. PL/SQL程序设计 第七章 包的创建和应用
  2. 当前环境下 物联网的四大关键点
  3. PageHelper分页插件使用
  4. bash脚本切换管理员_开始为系统管理员使用Bash脚本
  5. delphi tpanel 内凹效果_别墅装修公司前十名|别墅装修效果图|现代精致简约
  6. windows-sock-简单例子-转
  7. Rman 非catalog恢复
  8. linux mysql配置修改_【Mysql】linux下mysql的配置修改
  9. 使用XMLHTTP Request Object获取服务器数据
  10. preference android:layout,自定义PreferenceScreen的布局
  11. u盘维护系统 linux,制作绝对pe+puppy U盘维护系统双系统(以下方法也可制作archlinux U盘安装)...
  12. pgadmin3连接mysql_postgresql – PgAdmin III – 密码为空时如何连接数据库?
  13. DNS NoteBook
  14. 拉普拉斯变换的matlab仿真,拉普拉斯变换的Matlab求解方法
  15. Serval的试卷答案(线段树)
  16. 瀚海星云BBS python脚本登陆
  17. java证书cert_java – 使用带有证书路径(cert chain)的bouncy...
  18. MCGS 根据时间实现动态密码进行登陆
  19. Hadoop-2.7.1+Zookeeper-3.4.8+HBase-1.2.1+Hive-2.0.0完全分布式集群
  20. linux flash插件安装方法,Linux系统下安装Flash浏览器插件的方法

热门文章

  1. 阿里云短信服务平台注册
  2. R及R Studio下载及简单介绍(界面+R语言)
  3. linux php配置
  4. css 中的zoom,对CSS中zoom属性的总结
  5. 浅谈PHP代码执行的大致流程(opcode)
  6. 手机qq保存的文件路径
  7. Parameters(in)、Parameters(out) and Parameters(inout)
  8. 如何规范地使用双向(inout)信号?
  9. Spring|Spring事务管理
  10. JAVA数据类型笔记