成都网站建设07fly,网站的结构是什么样的,wordpress文章版权插件,苏ICP备网站建设中企动力无锡检查一段C语言代码的小括号( )、 中括号 [ ] 和大括号{ } 是否匹配。
输入格式:
在一行中输入一段C语言代码#xff0c;长度不超过1000个字符#xff08;行末以换行符结束#xff09;。
输出格式:
第一行输出左括号的数量和右括号的数量#xff0c;中间以一个空格间隔。…检查一段C语言代码的小括号( )、 中括号 [ ] 和大括号{ } 是否匹配。
输入格式:
在一行中输入一段C语言代码长度不超过1000个字符行末以换行符结束。
输出格式:
第一行输出左括号的数量和右括号的数量中间以一个空格间隔。 若括号是匹配的在第二行打印YES否则打印NO。
输入样例1:
for(int i0; iv; i){ visited[i] 0; for(int j0; jv; j) scanf(%d,(g-Adj[i][j])); }输出样例1:
8 8
YES输入样例2:
for(int i0; iv; i) a(i]0;输出样例2:
2 2
NO
解决
#includestdio.h
#includestring.hint left(char c) // 判断是不是左括号
{return (c ( || c { || c [);
}int right(char c) // 判断是不是右括号
{return (c ) || c } || c ]);
}int check(char left, char right) // 判断左右括号是否匹配
{if (left (){return right );}else if (left {){return right };}else{return right ];}
}int main()
{char stack[1005]; // 存左括号们的栈int top 0; // 栈顶char s[1005]; // 输入的字符串int leftnum,rightnum;leftnum0,rightnum0;int flag1;fgets(s, sizeof(s), stdin); // 使用 fgets 读取一行字符串int l strlen(s);for (int i 0; i l; i){if (left(s[i])){stack[top] s[i]; // 左括号入栈leftnum;}else if (right(s[i])){rightnum;if (top 0 || !check(stack[--top], s[i])) // 栈空或左右括号不匹配{flag0;}}}printf(%d %d\n,leftnum,rightnum);if (top 0 flag1) // 如果栈空了{printf(YES\n);}else{printf(NO\n); // 栈没空}return 0;
}