#include <iostream>
using namespace std;
int main() {
char a[][], b[][];
string c[];
string tmp;
int n, i = , j = , k = , total_len[], length[][];
cin >> n;
getline(cin, tmp);//what?我也不懂这个tmp有什么用
for (i = ; i < n; i++) {
getline(cin, c[i]);
total_len[i] = c[i].size();//记录c[i]的长度
}
for (i = ; i < n; i++) {
j = ;
while (c[i][j] != ':') {//c[i][j]是string变量的一种表达,表示字符串c[i]的第j个字符
a[i][k] = c[i][j];//扫描c[i],当c[i]的第j个字符不为":"时,将c[i]的字符存入a[i][k]中,即把c[i]字符串":"前的所有字符存入a[i][k]中
k = k + ;//如果满足c[i][j]的第j个字符不为":",就可以做到将c[i][0]-->c[i][j]中的字符存入a[i][0]-->a[i][k](k==j)中
j++;
}
length[i][] = k - ;//记录":"前的字符的个数
a[i][k] = ;//记录":"所在的位置
k = ;
for (j = j + ; j < total_len[i]; j++) {//由于j是扫描到":"后的值再+1,所以此时的c[i][j]为":"后输入的字符
b[i][k] = c[i][j];//扫描":"后的所有字符,将其存入b[][]中
k = k + ;
}
length[i][] = k - ;//记录":"后的字符的个数
b[i][k] = ;//记录终点位置
k = ;
}
for (i = ; i < n; i++) {
if (length[i][] >= length[i][])//如果":"前的字符比":"后的字符个数多
cout << "NO,";//输出"NO"
else {
k = ;
for (j = ; j < length[i][]; j++) {//找":"后的字符
if (a[i][k] == b[i][j])//如果":"前的字符在":"后有出现
k = k + ;//找下一个":"前的符是否有出现(不从头找而是从当前位置往后找)
if (k > length[i][])//如果k的值比":"前的字符长度大,即已经找完了":"前的所有字符,那么退出循环
break;
}
if (j == length[i][])//如果j的值和":"后的字符串长度相等,即在扫描到最后一个点时,无论":"前的字符是否被找完,都输出"NO,"
cout << "NO,";
else
cout << "YES,";//如果在找完字符串之前已经找到了":"前的字符,那么输出"YES,"
}
}
cout << endl;
return ;
}

输入:3
AB:ACDEbFBkBD
AR:ACDBrT
SARS:Severe Atypical Respiratory Syndrome
输出:
_________
(注:输入各行前后均无空格)

  本人后来在编译器上模拟了一遍,发现"AB:AB"这样的输入会输出"NO",才发现这个程序原来还有这个小细节(虽然不会影响考试),这道题一开始做的时候感觉很痛苦(因为在试卷上是分页的......),但后来放在一起看发现还挺简单的。。。。。。

几个细节要注意:

  一是注意它输出的是"YES,"和"NO,",注意不要引发一场关于逗号的血案......

  二是本蒟蒻才知道原来string定义的变量是可以用c[i][j]这样的形式表示字符串c[i]的第j个变量,感觉和vector差不多

  具体做法的话应该就是自己跑一遍程序   orz

NOIP2016提高组初赛(2)四、阅读程序写结果2、的更多相关文章

  1. NOIP2016提高组初赛(2)四、读程序写结果3、求最长回文子序列

    #include <iostream> using namespace std; int lps(string seq, int i, int j) { int len1, len2; i ...

  2. NOIP2016提高组初赛(C++语言)试题 个人的胡乱分析 Part 3.

    *已更新 胡乱分析的第三部分,程序填空(所谓的完善程序) 说到初赛,好像本周六就是了.哇好激动.. 填空题都是玄学.也许get到点了就会好做一些.. (标红的是填在空里的答案) T1.交朋友 (小矮个 ...

  3. NOIP2016提高组初赛(C++语言)试题 个人的胡乱分析 Part 2.

    洛谷秋令营day1模拟赛原地爆炸,心态崩了.于是打算写一下初赛题放松一下. 上次胡乱分析到了选择题,这次我想说说后面的题. 问题求解 T1.有一个1x8的方格图形,黑白两色填涂每个方格,两个黑格并不能 ...

  4. NOIP2016提高组初赛(C++语言)试题 个人的胡乱分析

    最近在做历年的初赛题,那我捡几道比较有代表性的题说一下好了 原题可以在这里看:https://wenku.baidu.com/view/10c0eb7ce53a580217fcfede.html?fr ...

  5. NOIP2016提高组初赛(1)

    一.选择题 6.后缀表达式,使用二叉树来求解,正常情况下的表达式a*(b+c)- d为中序遍历的二叉树. 即 若转换为后缀表达式(左右根)则为abc+*d- 14.代数字进去,多试几遍: 三.问题求解 ...

  6. NOIP2018提高组初赛准备

    NOIP2017提高组初赛错题 一.单项选择题(共15 题,每题1.5 分,共计22.5 分:每题有且仅有一个正确选项) 4. 2017年10月1日是星期日,1949年10月1日是( ). A. 星期 ...

  7. NOIP提高组初赛难题总结

    NOIP提高组初赛难题总结 注:笔者开始写本文章时noip初赛新题型还未公布,故会含有一些比较老的内容,敬请谅解. 约定: 若无特殊说明,本文中未知数均为整数 [表达式] 表示:在表达式成立时它的值为 ...

  8. noip2018提高组初赛试题

    一.单项选择题(共 10 题,每题 2 分,共计 20 分: 每题有且仅有一个正确选项) \2. 下列属于解释执行的程序设计语言是( ). A. C B. C++ C. Pascal D. Pytho ...

  9. NOIP2018提高组初赛知识点

     (传说,在神秘的初赛中,选手们经常互相爆零以示友好……) 历年真题:ti.luogu.com.cn 以下标题中打*的是我认为的重点内容 一.关于计算机 (一)计算机组成 硬件组成: 1. 控制器(C ...

随机推荐

  1. code forces 436 D. Make a Permutation!

    D. Make a Permutation! time limit per test 2 seconds memory limit per test 256 megabytes input stand ...

  2. 阿里云RDS for SQL Server使用的一些最佳实践

    了解RDS的概念 这也是第一条,也是最重要的一条,在使用某项产品和服务之前,首先要了解该产品或服务的功能与限制,就像你买一个冰箱或洗衣机,通常也只有在阅读完说明书之后才能利用起来它们的所以功能,以及使 ...

  3. 网页静态化技术Freemarker的详细介绍

    网页静态化技术Freemarker 一.Freemarker的基本介绍 1.1为什么要使用网页静态化技术 网页静态化解决方案在实际开发中运用比较多,例如新闻网站,门户网站中的新闻频道或者是文章类的频道 ...

  4. maven项目打包运行出错问题汇总

    maven项目打包时总会出现莫名其妙的错误,现总结一下. 打包方式:在maven项目底下运行cmd,输入mvn clean package,会自动按pom.xml的配置打成包.使用java -jar ...

  5. C#链接数据库增删改查的例子

    以users表为例,有三个字段,自增长的编号id,int类型:名称name,nvarchar类型,密码pwd,nvarchar类型首先在vs2005中引入using System.Data.SqlCl ...

  6. c# asp.net 多数组索引的解决方法

    本人今天做了一个功能 需要在一个类里用多个数组, 数组需要索引器来调用  一个数组 我查了msdn 一个类里面只能有一个this 索引器 那这么多数组如何构造索引呢 我在坛子里找到了解决之道 view ...

  7. 前端框架:react还是vue?

    之前写了一篇前端框架的大汇总,主要介绍了当下主流的框架和其特性.最近除了bootstrap,就属react和vue最为热门,这篇就主要拿这两个框架来做一下详细对比. 究竟如何正确使用?作为小白的我们从 ...

  8. ThreeJS的特效合成器和后期处理通道

    最近要写个 web 交互式发光可交互的框架.没查到啥好资料,自己一个人摸索了很久,有些失望,可是毕竟是探索过的东西,所以做个记录,怀念我过去好多天掉的青丝(捂脸).我在前面那篇博客里面已经介绍了如何让 ...

  9. ligerUI---下拉菜单(menubar)动态显示(从后台获取数据)

    写在前面: ligerui的下拉菜单是有点丑的,这也是没有办法的事........这里主要记录下,如何从后台获取数据进行菜单显示. 有两种方式:1.使用json数组来动态添加  2.字符串拼接.  其 ...

  10. sockt套接字编程

    一.Socket简介 Socket是进程通讯的一种方式,即调用这个网络库的一些API函数实现分布在不同主机的相关进程之间的数据交换. 几个定义: (1)IP地址:即依照TCP/IP协议分配给本地主机的 ...