该六道编程题覆盖的知识点比较多,试题还没有具体整理,后续会补上,现将代码整理好,以供大家参考。
// 好未来试题代码
//第一题
#include<string>
#include<iostream>
#include<vector>
using namespace std;
int main()
{
string str;
while (cin >> str)
{
for (int i = 0; i < str.length(); i++)
str[i] = (str[i] - '0') % 3 + '0';
int num = 1;
int ans = 0;
for (int i = 1; i < str.length(); i++)
{
if (str[i] == str[i - 1])
num++;
else
{
if (str[i] == '0')
{
ans += num / 3;
num = 1;
}
else if (str[i - 1] == '0')
{
ans += num;
num = 1;
}
else
{
ans += num / 3;
if (num % 3)
{
ans++;
num = 0;
}
else num = 1;
}
}
}
if (str[str.length() - 1] == '0')
ans += num;
else
ans += num / 3;
cout << ans << endl;
}
return 0;
}
//第二题
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int n;
while (cin >> n)
{
vector<long long> res;
for (int i = 0; i < n; i++)
{
long long x, k;
cin >> x >> k;
long long Num = 1;
long long ans = 0;
while (k)
{
if ((x & Num) == 0)
{
ans += (Num * (k & 1));
k >>= 1;
}
Num <<= 1;
}
res.push_back(ans);
}
for (auto const &it : res)
{
cout << it << endl;
}
}
return 0;
}
//第三题
#include <iostream>
#include <string>
#include <vector>
#include<algorithm>
using namespace std;
void dfs_subsets(vector<int> &nums, int count, int start, int k, vector<int> &v, vector<vector<int>> &res)
{
if (count >= k)
{
res.push_back(v);
return;
}
for (int i = start; i < nums.size(); i++)
{
v.push_back(nums[i]);
dfs_subsets(nums, count + 1, i + 1, k, v, res);
v.pop_back();
}
}
vector<vector<int>> subsets(vector<int>& nums)
{
vector<vector<int>> res;
vector<int> v;
for (int i = 0; i <= nums.size(); i++)
dfs_subsets(nums, 0, 0, i, v, res);
return res;
}
int main()
{
/*while (true)
{*/
vector<int> v_0;
vector<int> v_1;
for (int i = 0; i < 10; i++)
{
bool bl;
cin >> bl;
if (bl == true)
v_1.push_back(i);
else
v_0.push_back(i);
}
vector<vector<int>> res = subsets(v_0);
vector<vector<int>> result;
for (int i = 0; i < res.size(); i++)
{
vector<int> v(v_1.size() + res[i].size());
merge(v_1.begin(), v_1.end(), res[i].begin(), res[i].end(), v.begin());
result.push_back(v);
}
sort(result.begin(), result.end());
for (int i = 0; i < result.size(); i++)
{
for (int j = 0; j<result[i].size(); j++)
cout << result[i][j];
cout << endl;
}
return 0;
}
//第四题
#include <iostream>
#include <algorithm>
#include <vector>
#include <sstream>
#include <string>
using namespace std;
int main()
{
long long n, m;
while (cin >> n >> m)
{
double sum = 0;
for (int i = 0; i < n; i++)
{
int t;
cin >> t;
sum += t;
}
double result = sum / (n - m);
printf("%.2f", result);
}
return 0;
}
//第五题
#include <iostream>
#include <vector>
#include <algorithm>
#include <sstream>
using namespace std;
const int M = 10000;
int SumOfAscend(unsigned int array[], int n)
{
unsigned int sum[M];
for (int i = 0; i < n; i++)
{
sum[i] = array[i];
for (int j = 0; j < i; j++)
{
if (array[j] < array[i])
sum[i] = max(sum[j] + array[i], sum[i]);
}
}
int max = sum[0];
for (int i = 1; i < n; i++)
if (max < sum[i])
max = sum[i];
return max;
}
int main()
{
unsigned int array[M];
string str;
getline(cin, str);
stringstream ss;
ss << str;
string s;
int i = 0;
while (ss >> s) array[i++] = stoi(s);
cout << SumOfAscend(array, i) << endl;
return 0;
}
//第六题
#include<iostream>
#include<vector>
#include<set>
#include<stdio.h>
#include<string>
using namespace std;
char *ReplaceSubStr(const char *str, const char *srcSubStr, const char *dstSubStr, char *out)
{
int src_len = 0, dst_len = 0;
int i = 0;
while (srcSubStr[i] != '\0')
{
i++;
src_len++;
}
i = 0;
while (dstSubStr[i] != '\0')
{
i++;
dst_len++;
}
i = 0;
int j = 0;
int index = 0;
while (str[i] != '\0')
{
if (str[i] != srcSubStr[j])
{
if (j != 0)
{
for (int k = j; k > 0; k--)
out[index++] = str[i - k];
}
out[index++] = str[i];
j = 0;
}
else
{
j++;
if (j == src_len)
{
for (int k = 0; k < dst_len; k++)
out[index++] = dstSubStr[k];
j = 0;
}
}
i++;
}
out[index++] = '\0';
return out;
}
int main()
{
char str[1024];
char srcSubStr[1024];
char dstSubStr[1024];
char out[1024];
gets(str);
gets(srcSubStr);
gets(dstSubStr);
char *ret = ReplaceSubStr(str, srcSubStr, dstSubStr, out);
cout << ret << endl;
return 0;
}