码迷,mamicode.com
首页 > 其他好文 > 详细

NOIP2016提高组初赛(2)四、阅读程序写结果2、

时间:2017-10-10 21:53:18      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:res   etl   表达   length   bsp   ring   ever   tmp   考试   

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

输入: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、

标签:res   etl   表达   length   bsp   ring   ever   tmp   考试   

原文地址:http://www.cnblogs.com/pirote-zjy/p/7647648.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!