PAT 1052.卖个萌

PAT:1052.卖个萌点击打开链接


参考了萌萌小姐姐的解法,学到了vector还可以开两层!!!还有substr函数!!!

小姐姐的解法参考点击打开链接

写是为了加深自己印象,顺便做个学习记录~\(≧▽≦)/~啦啦啦


首先:因为输入有空格!!所以要用getline(cin,some),这个昨天的题也用到了,可以读空格等等反正是一行


第二:不知道字符串长度所以用string存,眼手嘴每个开一个vector保存内部内容!然后全部依次压到一个大的vector里面!!!!!以后调用v[0]v[1]v[2],代表手眼嘴这一大类,里面的在后面加数字调用比如v[0][1],就是手的第一个表情

vector<vector<string> > v;

开的大堆


第三:一个手有可能由两个字符组成,所以先循环找到左括号,再循环找到右括号,用substr()把两个括号之间的字符全部压到堆里面去!!!堆是用string开的!!所以可以不止存一个字符。


第四:要判断是否越界~若用户选的字符不存在,vector.length()是最后一个数组下标的数字(即长度-1)vector.size()是长度,所以如果大于vector.size()或者小于1的话就要输出"Are you kidding me? @\/@"

然而‘\’是转义字符,所以!!要变成'\\'

即写代码的时候是

cout << "Are you kidding me? @\\/@"<< endl;

学习很多!!但是要记住啊!!

向小姐姐学习!!!

完整code:

#include<vector>
#include<iostream>
using namespace std;
vector<vector<string> > v;//先说段错误!!!以为会爆结果不是这个原因
int main()
{
	
	for(int i=0;i<3;i++)
	{
		string s;
		getline(cin,s);
		vector<string> row;
		int j=0,k=0;
		while(j<s.length())
		{
			if(s[j]=='[')
			{
				while(k++<s.length())
				{
					if(s[k]==']')
					{
						row.push_back(s.substr(j+1,k-j-1));//获取字符串中一段 
						break;
					}
				}
			}
			j++;		
		}
		v.push_back(row);
	}	
	
	int n;
	cin >> n;
	while(n--)
	{
		int a,b,c,d,e;
		cin >> a >> b >> c >> d >> e;
		if(a>v[0].size()||b>v[1].size()||c>v[2].size()||d>v[1].size()||e>v[0].size()||a<1||b<1||c<1||d<1||e<1)	
		{
			cout << "Are you kidding me? @\\/@"<< endl;
		}
		else
		{
			cout << v[0][a-1] << "(" << v[1][b-1]  << v[2][c-1] << v[1][d-1] << ")" <<v[0][e-1]<< endl;
		}
	}
	 
} 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值