首页 > 深信服 825笔试 c++
头像
牛客339216640号
编辑于 2020-08-26 10:51
+ 关注

深信服 825笔试 c++

(1) 魔法树
#include<iostream>
#include<string>
#include<algorithm>
#include<vector>
using namespace std;

int main()
{
	long n;
	cin >> n;
	vector<int>array;
	for(int i=0;i<n;i++)
	{
		int temp;
		cin>>temp;
		array.push_back(temp);
	}
	dp(n+1); // dp[i]表示第i个树至少需要的次数,下标0  --  n-1
	dp[0]=0;
	sort(array.rbegin(),array.rend()); // 降序
	for(int j=1;j<n;j++)
	  dp[j]=dp[j-1]+array[0]-array[j];
    cout<<dp[n-1]<<endl;
  return 0;
}
(2) 字符串变换
#include<iostream>
#include<string>
#include<algorithm>
#include<vector>
using namespace std;

int main()
{
	string s;
	cin >> s;
	long n;
	cin >> n;
    int ans[10];
	for (int i = 0; i < 10; i++)
	{
		ans[i] = i; 
        }
	while (n--) // 因为只有0-9在变化,反复遍历变化的数字即可,学习理解这种思想,减少时间复杂度
	{
		int a, b;
		cin >> a >> b;
		for (int i = 0; i < 10;i++)
		if (ans[i] == a)
			ans[i] = b; // 修改成变化后的值
	}
	for (int j = 0; j < s.size(); j++)  // 时间复杂度为 O(s.size())
	{
		if (ans[s[j] - '0'] != s[j] - '0')
			s[j] = ans[j] + '0';
	}
	cout << s << endl;
	return 0;
}

题目不难,学会优化代码,减少时间复杂度,多思考思考问题


全部评论

(2) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐