东北师范大学电子信息专硕(02)方向20年真题及详解

详解不一定正确,只能当作参考 

第一题思路:

从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博客_链表中间节点

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-lyslyslys

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值