目录
第一题-五子棋
思路:
得到整个棋盘之后,循环判断每个位置如果是"."就下一个,其他的就是棋子,需要从该位置开始,向右五个位置或者右下五个位置或者下五个位置或者左下五个位置判断是否有五个,如果有就返回yes否则返回no
// write your code here cpp、
#include<iostream>
#include<string>
using namespace std;
bool gobang(string arr[])
{
for(int i = 0; i < 20; ++i)
{
for(int j = 0; j < 20; ++j)
{
if(arr[i][j] == '.')
continue;
//连续判断的方向:右、右下、下、左下
int right = 1, right_down = 1, down = 1, left_down = 1;
for(int k = 1; k < 5; ++k)
{
//向右
if(j<16 && arr[i][j] == arr[i][j+k])
++right;
if(i<16 && j<16 && arr[i][j] == arr[i+k][j+k])
++right_down;
if(i<16 && arr[i][j] == arr[i+k][j])
++down;
if(j>3 && i<16 && arr[i][j] == arr[i+k][j-k])
++left_down;
}
if(right == 5 || right_down == 5 || down == 5
|| left_down == 5)
return true;
}
}
return false;
}
int main ()
{
string arr[20];
while(cin>>arr[0])
{
for(int i = 1; i < 20; ++i)
{
cin>>arr[i];
}
if(gobang(arr))
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
return 0;
}
第二题-后缀表达式
思路:
利用栈存放数据,遇到运算符就取出运算,最后返回值即可
class Solution {
public:
/**
*
* @param tokens string字符串vector
* @return int整型
*/
int evalRPN(vector<string>& tokens) {
//如果是操作数则入栈,如果是操作符,连续取栈顶的两个元素运算,,运算结果继续入栈
//stoi-将字符串转化成整数
stack<int> _st;
for(int i = 0; i < tokens.size(); ++i)
{
if(tokens[i] == "+"
|| tokens[i] == "-"
|| tokens[i] == "*"
|| tokens[i] == "/")
{
long long left = _st.top();
_st.pop();
long long right = _st.top();
_st.pop();
if(tokens[i] == "+")
{
_st.push(left+right);
}
if(tokens[i] == "-")
{
_st.push(right-left);
}
if(tokens[i] == "*")
{
_st.push(left*right);
}
if(tokens[i] == "/")
{
_st.push(right/left);
}
}
else
{
_st.push(stoi(tokens[i]));
}
}
return _st.top();
}
};