AcWing 每日一题

该博客探讨了一种基因组学分析方法,通过比较斑点牛和非斑点牛的基因差异来确定哪些位置的基因能够区分两者。通过对每个位置的基因进行遍历和标记,发现如果斑点牛的基因中包含非斑点牛的基因,则无法判断该位置的基因是否与斑点特征相关。最终,统计出无法判断的基因位置数量,这有助于理解这两种牛的遗传特性差异。
摘要由CSDN通过智能技术生成

1776. 牛的基因组学
在这里插入图片描述
分析:

  • 题目比较难读懂,先解释一下题意,拿题目的案例来说,奶牛存在斑点的位置数量是1,第一个位置,斑点牛的基因是A,G,G,非斑点牛的基因是AAA,因为在第一个位置,非斑点牛的基因有的,斑点牛也有,所以无法判断是否存在斑点,第二个位置,斑点牛的基因是A,A,G,非斑点牛的基因是C,C,C,所以非斑点牛的基因在斑点牛牛中是没有的,故第二个位置可以判断
  • 其他的位置是一样的道理
  • 所以我们可以推断,只要某个位置上非斑点牛的基因,在斑点牛里也有,那么就无法判断。对于斑点牛组每个字符串的某一个字符必须是非斑点牛组中对应位置没有出现过的。
  • 遍历斑点牛组的字符串的每一位。然后遍历非斑点牛组的每个串的对应位 ,假如非斑点牛组的某一个串的某一个字符在斑点牛组出现过,就计数,否则不计入,可采用标记法
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
string a1[300];
string a2[300];
int book[10000 + 10];
int main() {
	//标记
	int n, m;
	cin >> n >> m;
	for (int i = 0; i < n; i++) {
		cin >> a1[i];
	}
	for (int i = 0; i < n; i++) {
		cin >> a2[i];
	}

	int ans = 0;
	for (int i = 0; i < m; i++) { //控制列
		int flag = 0;
		memset(book, 0, sizeof(book));
		for (int j = 0; j < n; j++) { //控制行
			book[a1[j][i] - 'A'] = 1;//行在动,列没动
		}
		for (int j = 0; j < n; j++) {
		
			if (book[a2[j][i] - 'A'] == 1) { 
				flag = 1;
				break;
			}
		}
		if (flag == 0) {
			ans++;
		}
	}
	cout << ans << endl;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值