详解不一定正确,只能当作参考
第一题思路:
从10天开始递推回去每次循环当前个数=(个数+1)*2,然后循环9次就是一开始的个数
#include<bits/stdc++.h>
using namespace std;
int main() {
int end = 1;
for(int i = 1;i <= 9;++i) {
end = (end + 1) * 2;
}
printf("%d\n", end);
return 0;
}
第二题思路:
循环用map记录当前的s里面的字符然后在c里面的字符判断是否用map记录过记录过删除即可
#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
#define ll long long
using namespace std;
const int maxn = 1e4+9;
char s[maxn];//假定的字符数组
char c[maxn];//假定的字符数组
int book[maxn];
int main() {
int d1 = strlen(s);
int d2 = strlen(c);
for(int i = 0;i < d2;++i) {
book[c[i]-'A'] = 1;
}
int sum = 0;int r = 0;
for(int i = 0;i < d1;++i) {
if(book[s[i]-'A']) {
}
else {
s[r] = s[i];
r++;
}
}
return 0;
}
第三题思路:
说实话没看懂题目,我的想法是排出最大到最小的让他吃即可
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e4+9;
int a[maxn];
bool cmp(int a, int b) {
return a > b;
}
int main() {
int n;
scanf("%d", &n);//输入羊群数量
for(int i = 0;i < n;++i) {
scanf("%d", &a[i]);
}
sort(a, a+n, cmp);
return 0;
}
第四题思路:
从头到尾循环然后判断即可简答题
#include<iostream>
using namespace std;
int main() {
int sumdx = 0, sumxx = 0, kong = 0, biaodian = 0;
string s1;
cin >> s1;
string s2;
cin >> s2;
string s3;
cin >> s3;
for(int i = 0;i < s1.length();++i) {
if('A' <= s[i] && s[i] <= 'Z') {
sumdx++;
}
else if('a' <= s[i] && s[i] <= 'z') {
sumxx++;
}
else if(' ' == s[i]) {
kong++;
}
else if(s[i] == '.' || s[i] == ',') {
biaodian++;
}
}
printf("%d %d %d %d\n", sumdxx, sumxx, kong, biandian);//大写字母小写字母空格标点个数
return 0;
}
第五题:
思路:
用从1到n个的9对n进行取模直到取模成功
#include<iostream>
#define ll long long
using namespace std;
int main() {
ll n;
scanf("%lld", &n);//获取一个素数
ll now = 9;ll ans = 1;
while(1) {
if(now >= n) {
if(now % n == 0) {
printf("%lld\n", ans);
return 0;
}
}
now = now * 10 + 9;
ans++;
}
return 0;
}
第六题:
思路:递推公式为f[n]=f[n-1]+n
#include<iostream>
using namespace std;
const int maxn = 1e5+9;
int f[maxn];
int main() {
int n;
scanf("%d", &n);
f[1] = 2;
for(int i = 2; i <= n; ++i) {
f[i] = f[i-1] + i;
}
printf("%d\n", f[n]);
return 0;
}
第七题:
思路:排序可以找到附近的距离最近的两个或一个元素,然后找出循环查询他们的距离找出最短即可。
#include<bits/stdc++.h>
using namespace std;
#define inf 0x3f3f3f3f
map<pair<pair<int,int>,int>,int>A;
vector<int>arr;//假设里面已经存取数据
int main() {
sort(arr.begin(), arr.end());
int min1 = inf;
for(int i = 1;i < arr.size();++i) {
int sum = arr[i]-arr[i-1];
min1 = min(max1, sum);
}
printf("%d\n", min1);
return 0;
}
第八题:
思路:我们可以通过递归的方法进行遍历所有可能出现的情况类似(全排列)的思想
#include<iostream>
using namespace std;
string s;int x = 0;
void dfs() {
if(x >= s.length()) {
cout << s << endl;
return;
}
if(s[x] >= '0' && s[x] <= '9') {
x++;
dfs();
x--;
}
else {
if('A' <= s[x] && s[x] <= 'Z') {
s[x] += 'a'-'A';
}
x+=1;
dfs();
x-=1;
if('a' <= s[x] && s[x] <= 'z') {
s[x] += 'A'-'a';
}
x+=1;
dfs();
x-=1;
}
}
int main() {
cin >> s;
dfs();
return 0;
}
第9题:思路:在头节点分别创建两个节点一个快节点一个慢节点快节点一次走2步慢节点一次走1步快节点为空时慢节点则在一半处。(8条消息) 面试题——查找单链表的中间节点_ttyue_123的博客-CSDN博客_链表中间节点