传送门:2014 NEERC Southern Subregional M
按要求输出所有出现重复定义情况时的错误信息
(1)每遇到一个{,就进入下一层
(2)每遇到一个字母,首先判断上面层次中是否有该字母的定义,若有则输出错误信息,然后记录下该层次并记录该点的行列位置
(3)每遇到一个},就退回上一层,然后把该层中所有的字母定义位置删去
/****************************************************** * File Name: m.cpp * Author: kojimai * Create Time: 2014年10月25日 星期六 15时09分36秒 ******************************************************/ #include#include #include #include #include #include using namespace std; vector p[27]; char s[55]; int hang[26][2505],lie[26][2505]; void solve(int level) { for(int i = 0;i < 26; i++){ while(p[i].size()&&p[i][p[i].size()-1] > level)//退回上一层后删去删去底下层次中的记录 p[i].erase(p[i].begin()+p[i].size()-1); } } int main() { int n; for(int i = 0;i < 26; i++) p[i].clear(); scanf("%d",&n); getchar(); int level = 1; for(int i = 0;i < n; i++) { gets(s); int len = strlen(s); for(int j = 0;j < len; j++) { //cout<<"i = "<