面了二面,面试主要问题除了项目以外,还有三道编程题目,
1,挨行打印二叉树,
2, 考虑特殊字符的将字符串转化为整型。
3,计算任意输入的四个数通过加减乘除后是否是24,
/*
* Function: 计算四个数通过加减乘除后是否是24
*/
#include <iostream>
#include <vector>
using namespace std;
bool fun(vector<double> & data){
if(data.size() == 1 && data[0] == 24)
return true;
for(int i = 0; i < data.size(); i++)
for(int j = 0; j < data.size() && i != j; j++){
vector<double> tmp_data;
for(int k = 0; k < data.size() && k != i && k!= j; k++)
tmp_data.push_back(data[k]);
double calculate_data = data[i] + data[j];
tmp_data.push_back(calculate_data);
if(fun(tmp_data))
return true;
calculate_data = data[i] - data[j];
tmp_data.clear();
for(int k = 0; k < data.size() && k != i && k!= j; k++)
tmp_data.push_back(data[k]);
tmp_data.push_back(calculate_data);
if(fun(tmp_data))
return true;
calculate_data = data[i] * data[j];
tmp_data.clear();
for(int k = 0; k < data.size() && k != i && k!= j; k++)
tmp_data.push_back(data[k]);
tmp_data.push_back(calculate_data);
if(fun(tmp_data))
return true;
calculate_data = data[i]*1.0 / data[j];
tmp_data.clear();
for(int k = 0; k < data.size() && k != i && k!= j; k++)
tmp_data.push_back(data[k]);
tmp_data.push_back(calculate_data);
if(fun(tmp_data))
return true;
}
return false;
};
int main(){
vector<double> data{1, 2, 3, 4};
if(fun(data))
cout << "It's true." << endl;
else
cout << "It's false." << endl;
return 1;
}