【ccf-csp题解】第1次csp认证-第三题-命令行选项-题解

题目描述

【ccf-csp题解】第1次csp认证-第三题-命令行选项-题解_第1张图片【ccf-csp题解】第1次csp认证-第三题-命令行选项-题解_第2张图片思路讲解

本题是一个简单的字符串模拟题,这种题目是csp认证第三题的常客

大致思路是用两个bool数组记录某一个选项(0--25下标对应小写字母a--z),第一个数组中无参选项为true,第二个数组中有参选项为true,比如说假如st1[0]==false&&st2[0]==false,意思是下面的命令中不能出现-a的选项(包括有参和无参)

对于每一个命令,首先进行字符串的分割,分割方式推荐使用stringstream技术,具体看下面的文章:

stringstream基础使用(类型转换、分割字符串)

分割之后遍历每一个连续字符串,排除不合法情况,把有参的选项的参数找到并记录,最后统一输出即可,详细看下面的代码和注释

满分代码和注释

#include
#include
#include
#include
using namespace std;
const int N=30;
bool st1[N];//无参记录 
bool st2[N];//有参记录
string ans[N];//每一个选项对应的参数
int main()
{
	string str;
	cin>>str;
	for(int i=0;i>n;
	getchar();//吸收回车,因为下面有getline 
	for(int i=1;i<=n;i++)
	{	
		getline(cin,str);
		printf("Case %d:",i);
		vectorsp;
		stringstream ss(str);
		while(ss>>str)sp.push_back(str);//分割字符串至vector中 
		for(int j=0;j<26;j++)ans[j].clear();//清空每一个样例的答案 
		for(int j=1;j

你可能感兴趣的:(CCF-CSP,算法综合,算法,c++,ccf-csp,字符串模拟)