模拟算法总述

模拟

1.模拟算法介绍

模拟算法通过模拟实际情况来解决问题,一般容易理解但是实现起来比较复杂,有很多需要注意的细节,或者是一些所谓很”麻烦”的东西。
模拟题一般不涉及太难的算法,一般就是由较多的简单但是不好处理的部分组成的,考察选手的细心程度和整体的逻辑思维。
一般为了使得模拟题写的逻辑清晰一些,经常会写比较多的小函数来帮助解题,例如int和string的相互转换、回文串的判断、日期的转换、各种特殊条件的判断等等。

2.例题

2.1 地址转换

题目描述

Excel是最常用的办公软件。每个单元格都有唯一的地址表示。比如:第12行第4列表示为:“D12”,第5行第255列表示为"IU5"。
事实上,Excel提供了两种地址表示方法,还有一种表示法叫做RC格式地址。第12行第4列表示为"R12C4",第5行第255列表示为"R5C255""。你的任务是:编写程序,实现从RC地址格式到常规地址格式的转换。

输入描述
用户先输入一个整数 n ( n < 100 ) n (n <100) n(n<100),表示接下来有 n n n行输入数据。
接着输入的n行数据是RC格式的Excel单元格地址表示法。

输出描述
程序则输出 n n n行数据,每行是转换后的常规地址表示法。

输入输出样例

示例

输入

2
R12C4
R5C255

输出

D12
IU5

思路

这个题本质就是进制的转化,Excel表中的列可以转换为26进制。

代码

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

int n, r, c;
char a, b;
int main() {
   
	cin >> n;
	while(n --) {
   
		cin >> a >> r >> b >> c;
		if(b <= 26) {
   
			char d = c + 'A' - 1;
			cout << d << r << endl;
		} else if(b > 26) {
   
			char d = 'A' + c/26 - 1;
			char e = 'A' + c%26 - 1;
			cout << d << e << c << endl;
		}
	}	
	return 0;
}

2.2 DNA序列修正

问题链接:https://www.lanqiao.cn/problems/3904/learning/page=1&first_category_id=1&name=DNA

问题描述
在生物学中, D N A DNA DNA序列的相似性常被用来研究物种间的亲缘关系。现在我们有两条 D N A DNA DNA序列,每条序列由 A 、 C 、 G 、 T A、C、G、T ACGT四种字符组成,长度相同。但是现在我们记录的 D N A DNA DNA序列存在错误,为了严格满足 D N A DNA DNA序列的碱基互补配对即 A − T A-T AT C − G C-G CG,我们需要依据第—条 D N A DNA DNA序列对第二条 D N A DNA DNA序列进行以下操作:
1.选择第二条 D N A DNA DNA序列的任意两个位置,交换他们的字符。
2.选择第二条 D N A DNA DNA序列任意一个位置,将其字符替换为 A 、 C 、 G 、 T A、C、G、T ACGT中的任何一个。
需要注意的是:每个位置上的碱基只能被操作一次!
你的任务是通过最小的操作次数,使第二条 D N A DNA DNA序列和第一条 D N A DNA DNA序列互补。并且已知初始两条 D N A DNA DNA序列长度均为 N N N

输入格式
第一行包含一个整数 N N N ( 1 < N < 1 0 3 ) (1 <N<10^3) (1<N<103),表示 D N A DNA DNA序列的长度。
接下来的两行,每行包含一个长度为 N N N的字符串,表示两条 D N A DNA DNA序列。

输出格式
输出一个整数,表示让第二条DNA序列和第—条DNA序列互补所需的最小操作次数。

样例输入

5
ACGTG
ACGTC

样例输出


                
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值