目录
第一题-选择题1
思路
首先3+3直接调用正常+,然后由于operator+中第一个参数是this,然后3没有对应的this指针
第二题-合法括号序列判断
思路
利用栈的一个出入口的思想,如果是遇到了(那么入栈,如果是遇到了)就查看是否有对应的'(',若没有则匹配不完整,如果有的匹配成功出栈‘(’,遍历完后如果栈为空则表示匹配完了,如果不为空则表示有剩下的,匹配不成功。
class Parenthesis {
public:
bool chkParenthesis(string A, int n) {
// write code here
stack<char>a;
for(auto& ch : A)
{
if(ch == '(')
{
a.push(ch);
}
else if(ch == ')')
{
if(a.empty()) return false;
a.pop();
}
else
{
return false;
}
}
return a.empty();
}
};
第三体-斐波那契数
思路;
依次遍历斐波那契数列,找到距离N最近的两个一大一小的两个数,然后取两个数与N差值的最小的那一个即可
#include<iostream>
using namespace std;
int main ()
{
int f, f1 = 0, f2 = 1;
int N;
int left, right;
cin>>N;
while(1)
{
f = f1+f2;
f1 = f2;
f2 = f;
if(f < N)
{
left = f;
}
else
{
right = f;
break;
}
}
cout<<min((N-left), (right-N))<<endl;
return 0;
}