2014
1.两个栈实现队列进、出、判空
template<class T>
class Queue
{
public:
//入队
void Push(const T& data) {
stack1.push(data);
}
//判空
bool isEmpty() {
return(stack1.empty() && stack2.empty());
}
//出队
void Pop()
{
if (isEmpty()) {
cout << "this queue is empty" << endl;
return;
}
if (!stack2.empty()) {
stack2.pop();
}
else {
while (stack1.size() > 0) {
stack2.push(stack1.top());
stack1.pop();
}
stack2.pop();
}
}
2.二元一次方程
#include<iostream>
using namespace std;
typedef struct R {
float x, y;
};
int main() {
int a, b, t, c = 0;
cin >> t;
R* res = new R[t];
for (int i = 0; i < t; i++) {
cin >> a >> b;
res[c].x = (a + b)*1.0 / 2;
res[c].y = a * 1.0 - res[c].x;
c++;
}
for (int i = 0; i < t; i++)
cout << res[i].x << " " << res[i].y << endl;
delete[]res;
return 0;
}
3.子串
#include<iostream>
#include<string>
using namespace std;
bool check(string s, string t) {//s是t子串
int len_s = s.length(), len_t = t.length();
for (int i = 0, j = 0; i < len_t; i++,j++) {
if (t[i] != s[j]) j = -1;
if (j == len_s - 1) return 1;
}
return 0;
}
int main() {
string s, t;
getline(cin, s);
getline(cin, t);
cout << (check(s, t) ? "yes\n" : "no\n");
return 0;
}
2017
1.是否排序树
int min = -32876;
bool judge(BiTree T) {
if (T) {
judge(T->lchild);
if (min > T->data)
return 0;
min = T->data;
judge(T->rchild);
}
return 1;
}
2.拆成两个素数
#include<iostream>
#include<math.h>
using namespace std;
bool isPrime(int n) {
for (int i = 2; i <= sqrt(n); i++)
if (n % i == 0)
return 0;
return 1;
}
int f(int n) {
int c = 0;
for (int i = 2; i < n / 2; i++) {
if (isPrime(i) && isPrime(n - i)) {
c++;
//cout << i << " " << n - i << endl;
}
}
return c;
}
int main() {
int n;
for (int i = 0; i < 500; i++) {
cin >> n;
if (n == 0)break;
cout << f(n) << endl;
//isPrime(n) ? cout << "1\n": cout << "0\n";
}
return 0;
}
3.密码判断
#include<iostream>
using namespace std;
void check(string s) {
int len = s.length(), flag[4] = { 0 }, count = 0;
if (len < 8 || len>16) {
cout << "NO\n";
return;
}
const char c[] = { '~','!','@','#','$','%','^' };
for (int j = 0; j < sizeof(c) / sizeof(char); j++)
if (s.find(c[j]) != string::npos) {
flag[3] = 1;
break;
}
for (int i = 0; i < len; i++) {
if (isupper(s[i]))flag[0] = 1;
if (islower(s[i]))flag[1] = 1;
if (isdigit(s[i]))flag[2] = 1;
}
for (int k = 0; k < 4; k++) {
if (count == 3) {
cout << "YES\n";
return;
}
if (flag[k])count++;
}
cout << "NO\n";
return;
}
int main() {
int M;
cin >> M;
string s;
for (int i = 0; i < M; i++) {
cin >> s;
check(s);
}
return 0;
}
2015
1.树根
#include<iostream>
#include<string>
using namespace std;
int fun(string s) {
if (s.length() == 1)
return stoi(s);
else {
int sum = 0;
for (int i = 0; i < s.length(); i++)
sum += s[i] - 48;
return fun(to_string(sum));
}
}
int main(){
string s;
while (cin>>s){
if (s == "0")
break;
cout << fun(s) << endl;
}
return 0;
}
2.单词反转
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
int main() {
int n;
cin >> n;
getchar();
string s;
vector<string>v;
for (int i = 0; i < n; i++) {
do {
cin >> s;
v.push_back(s);
} while (getchar()!='\n');
for (vector<string>::iterator it = v.begin(); it != v.end(); it++) {
string t = *it;
reverse(t.begin(), t.end());
cout << t << " ";
}
cout << endl;
v.clear();
}
return 0;
}