pta括号配对
时间: 2023-10-17 22:15:18 浏览: 44
题目描述:
给定N个括号,请你判断它们是否配对。
输入格式:
第一行包含一个整数N,表示括号的个数。
第二行包含N个字符,每个字符只可能是 ( 或 )。
输出格式:
如果所有括号都可以配对,则输出YES,否则输出NO。
数据范围:
1≤N≤105
输入样例1:
6
()()()
输出样例1:
YES
输入样例2:
5
(())(
输出样例2:
NO
C++ 代码:
```cpp
#include <iostream>
#include <stack>
using namespace std;
int main()
{
int n;
cin >> n;
stack<char> stk;
while (n -- )
{
char c;
cin >> c;
if (c == '(') stk.push(c);
else
{
if (stk.empty())
{
cout << "NO" << endl;
return 0;
}
stk.pop();
}
}
if (stk.empty()) cout << "YES" << endl;
else cout << "NO" << endl;
return 0;
}
```
相关问题
括号匹配c++pta
括号匹配是指在编程中,判断括号是否匹配的一种操作。在C++中,可以使用栈来实现括号匹配。
以下是一个简单的括号匹配算法的实现步骤:
1. 创建一个空栈。
2. 遍历输入的字符串,对于每个字符:
- 如果是左括号('('、'['、'{'),将其压入栈中。
- 如果是右括号(')'、']'、'}'),则判断栈是否为空:
- 如果栈为空,说明右括号没有对应的左括号,括号不匹配,返回false。
- 如果栈不为空,弹出栈顶元素,并判断弹出的左括号与当前右括号是否匹配:
- 如果不匹配,括号不匹配,返回false。
3. 遍历完字符串后,如果栈为空,则说明所有括号都匹配,返回true;否则,说明还有未匹配的左括号,返回false。
下面是一个示例代码实现:
```cpp
#include <iostream>
#include <stack>
#include <string>
bool isBracketMatched(const std::string& str) {
std::stack<char> brackets;
for (char c : str) {
if (c == '(' || c == '[' || c == '{') {
brackets.push(c);
} else if (c == ')' || c == ']' || c == '}') {
if (brackets.empty()) {
return false;
}
char top = brackets.top();
brackets.pop();
if ((c == ')' && top != '(') || (c == ']' && top != '[') || (c == '}' && top != '{')) {
return false;
}
}
}
return brackets.empty();
}
int main() {
std::string str;
std::cout << "请输入一个字符串:";
std::cin >> str;
if (isBracketMatched(str)) {
std::cout << "括号匹配" << std::endl;
} else {
std::cout << "括号不匹配" << std::endl;
}
return 0;
}
```
pta最匹配的矩阵c语言
以下是一个简单的 C 语言程序,用于计算两个矩阵的乘积:
```c
#include <stdio.h>
#define ROWS 3
#define COLS 3
int main() {
int A[ROWS][COLS] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
int B[ROWS][COLS] = {{9, 8, 7}, {6, 5, 4}, {3, 2, 1}};
int C[ROWS][COLS] = {0};
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
for (int k = 0; k < ROWS; k++) {
C[i][j] += A[i][k] * B[k][j];
}
}
}
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
printf("%d ", C[i][j]);
}
printf("\n");
}
return 0;
}
```
这个程序声明了三个 3x3 的矩阵,A、B 和 C。程序使用一个三重循环计算 C 矩阵的每个元素。对于每个 i 和 j,程序计算 C[i][j] 的值,这个值等于 A[i][0] * B[0][j] + A[i][1] * B[1][j] + A[i][2] * B[2][j]。最后,程序打印出 C 矩阵的所有元素。