铜T3牛的基因组学
不开O2优化!!!
样例输入文件,样例输出文件见下。
题目描述:
农夫舒婧拥有n头有斑点的奶牛和n头没有斑点的奶牛。由于她刚刚完成了关于牛的基因的一门课程,所以她相信,她的奶牛身上的斑点是由于奶牛基因组上单个位置的基因突变引起的。农夫舒婧花费了巨大的代价,把她的奶牛的基因组进行了排序。每一个基因组都是一个由ACGT四个字母组成的长度为m的字符串。当她排列她的牛的基因组时,她得到了以下的表格,(此时n=3)
位置 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | … | M |
有斑点的牛 1 | A | A | T | C | C | C | A | … | T |
有斑点的牛 2 | G | A | T | T | G | C | A | … | A |
有斑点的牛 3 | G | G | T | C | G | C | A | … | A |
无斑点的牛 1 | A | C | T | C | C | C | A | … | G |
无斑点的牛 2 | A | C | T | C | G | C | A | … | T |
无斑点的牛 3 | A | C | T | T | C | C | A | … | T |
仔细观察这张表,她推测,位置2是基因组中可能解释斑点的潜在位置。也就是说,通过查看这张表,农夫舒婧可以预测她的哪头奶牛是有斑点的,哪些不是(这里,A或G意味着斑点,C意味着无斑点; T是无关紧要的,因为它不会出现在任何奶牛的位置2.)
位置1本身不足以解释斑点,因为这个位置的A可能表明一头斑点的牛或一头无斑点牛。给出农民舒婧的奶牛的基因组,请计算潜在解释斑点的数目。
输入输出格式
输入格式(文件名 cownomics.in):
输入数据第一行包含两个小于100的正整数N和M。下一行至第N+1行每行包含一串长为M的字符串,表示斑点牛的基因组。第N+2行至最后每行同样包含一串长为M的字符串,表示普通奶牛的基因组。
输出格式(文件名 cownomics.out):
请计算在基因组中可能导致斑点病的位置的数量(一个大于等于0,小于等于M的整数)。
样例输入输出
样本输入
3 8
AATCCCAT
GATTGCAA
GGTCGCAA
ACTCCCAG
ACTCGCAT
ACTTCCAT
样本输出
1
代码如下:
#include<bits/stdc++.h>
using namespace std;
int main(){
freopen("cownomics.in","r",stdin);
freopen("cownomics.out","w",stdout);
string s[102],s1[102];
long int ss=0,i,j,n,m,len,k;
bool f=1;
cin>>n>>len;
for (i=1;i<=n;i++) cin>>s[i];//有斑点奶牛
for (i=1;i<=n;i++) cin>>s1[i];//无斑点奶牛
for (j=0;j<=len-1;j++){//从列循环
f=1;//判断这个位置是否为有斑点奶牛
for (m=1;m<=n;m++){//循环有斑点
for (i=1;i<=n;i++){//循环无斑点奶牛
if (s[m][j]==s1[i][j]) {f=0;break;}//如果一有相同,就说明不是
}
if (!f) break;//如果不是的话,这个也不用循环了,直接退出
}
if (f) ss++;//如果是数目加一
}
cout<<ss;//输出
return 0;
}
思路:输入,三重循环i,j,k,分别表示第i组基因,第i组基因中有斑点牛第j个位置的基因,无斑点牛第k个位置的基因,一旦位置i的斑点基因j的字母和非斑点基因k的字母相同,跳过i这个位置,否则答案数量增加,输出。
第一行是整数n(1<=n<=10)下面n*n的矩阵由数字0~9组成,描述的是最后完成的画布。
输出格式(文件名 art.out)
输出一个整数 表示最终画布的颜色中,可能为第一个画上去的颜色个数。
代码如下:
这题虽然老师讲过,但还是没搞懂。这次测试总体来说是很难的,证明了自己还很菜,所以在未来一定要加紧努力。