360暑期实习编程题2020/3/24

一、DNA匹配

题目描述

有一种DNA由A和T组成,长度为n,顺次连接。现有一种手段可以改变这种DNA:每一次可以交换DNA上两个核酸的位置,也可以将某个特定位置的核酸修改为另一种核酸。现有一种DNA,希望将它改造成另一种DNA,计算最少的操作次数。

输入:两行DNA
输出:第一行DNA改为第二行DNA的最少修改次数

C++实现(AC)

#include<bits/stdc++.h>
using namespace std;

class Solution {
public:
	int Leasttimesofchange(string& s1, string& s2) {
		if (s1.size() != s2.size())
			return -1;
		int len = s1.size();
		if (len == 0)	return 0;

		int a = 0, b = 0, c, result;
		for (int i = 0; i < len; ++i) {	//两个序列相同的元素个数
			if (s1[i] == s2[i])
				++a;
		}
		for (int i = 0; i < len; ++i) {	//除去相同元素,其中A有多少个
			if (s1[i] == 'A' && s1[i] != s2[i])
				++b;
		}
		c = len - a - b;	//除去相同元素,其中T有多少个
		result = min(b, c) + abs(b - c);
		return result;
	}
};
int main() {
	Solution S;
	string s1, s2;
	cin >> s1 ;
	cin >> s2 ;
	int times = S.Leasttimesofchange(s1, s2);
	cout << times << endl;
}

二、抽奖

题目描述

A和B两人抽奖。抽奖箱中有n张中奖票,m张不中奖票。A和B轮流从中抽一张,如果有人抽到中奖票就结束游戏,抽到中奖票的人胜利。抽过的奖票会被丢弃。另外,B每次抽完后,会再次抽取一张票并丢弃掉(这张中奖不算B胜利)。现在,A先抽,求A胜的概率,保留4位小数后输出。若两人最后都没抽到中奖票,算B胜利。

思路分析

没有做出来……

三、总结

本次笔试题,除了编程题,前面还有逻辑测试题和一些基础选择题,总体题量有点大,做题的时候有些许干扰。关于编程题,重在思路,不惧怕,才能静下来面对问题。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值