上次说到了学校测试的1,2两题,这次该说3,4两题了
第三题:
上次题目都简化了,这次要“稍微”复杂“一点”:
FJ拥有n头有斑点的奶牛和n头没有斑点的奶牛。由于他刚刚完成了关于牛的基因的一门课程,所以他相信,他的奶牛身上的斑点是由于奶牛基因组上单个位置的基因突变引起的。FJ花费了巨大的代价,把他的奶牛的基因组进行了排序。每一个基因组都是一个由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是基因组中可能解释斑点的潜在位置。也就是说,通过查看这张表,FJ可以预测他的哪头奶牛是有斑点的,哪些不是(这里,A或G意味着斑点,C意味着无斑点; T是无关紧要的,因为它不会出现在任何奶牛的位置2)。位置1本身不足以解释斑点,因为这个位置的A可能表明一头斑点的牛或一头无斑点牛。
给出FJ的奶牛的基因组,请计算潜在解释斑点的数目。
输入输出格式
输入格式
输入数据第一行包含两个小于100的正整数N和M。下一行至第N+1行每行包含一串长为M的字符串,表示斑点牛的基因组。第N+2行至最后每行同样包含一串长为M的字符串,表示普通奶牛的基因组。
输出格式
请计算在基因组中可能导致斑点病的位置的数量(一个大于等于0,小于等于M的整数)。
这道题数据比较小,所以我直接暴力三重循环了
大致思路:
一个循环,每只斑点牛基因组的第i个基因和每只普通牛的第i个基因对比,一旦相同,立马跳过i这个位置,再比较i+1这个位置上的基因;若第i个位置上,斑点牛的基因与普通牛的基因没有一个字母相同,则s++
代码如下:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,m;
string bd[101],zc[101];
cin>>n>>m;
for(int i=1;i<=n;i++)
cin>>bd[i];
for(int i=1;i<=n;i++)
cin>>zc[i];
bool p;
int s=0;
for(int i=0;i<=m-1;i++)
{
p=true;
for(int j=1;j<=n;j++)
for(int k=1;k<=n;k++)
if(bd[j][i]==zc[k][i])
{
p=false;
break;
}
if(p) s++;
}
cout<<s;
return 0;
}
第四题:
整套试卷里我唯一没有AC的题
题目:
世界各地的艺术评论家直到现在才开始意识到伟大的牛画家Bibi的创意天赋。
Bibi用一种特殊的方式绘画。她用一块N*N的画布开始画画 “0”表示一个画布的空单元格。然后她在画布上画了9个矩形。她会使用9种颜色的一种(为了方便(Bibi是个很懒的人),她把颜色编号为1~9). 她每次可以选择任意一种未使用过的颜色进行绘画。
举个例子,如果她从颜色2开始画,下面是她画画的过程:
2220
2220
2220
0000
然后她可能画了一个颜色为7的矩形:
2220
2777
2777
0000
随后她画了一个颜色为3的小矩形:
2230
2737
2777
0000
每一个矩形的边都是平行于边缘的,鉴于画布的最终状态,请计算出画布上有多少种颜色可能是第一次被画上去的。
(矩形的大小是不确定的 可能是一个单元格 也可能覆盖整个画布)
输入格式
第一行是整数n(1<=n<=10)下面n*n的矩阵由数字0~9组成,描述的是最后完成的画布。
输出格式
输出一个整数 表示最终画布的颜色中,可能为第一个画上去的颜色个数。
思路大致是明确了:
对于一个在画布上出现过的颜色,找到它出现过的最大的行数和最大的列数,如题目中的‘2’,最大行数是2,最大列数是3,接着发现‘7’覆盖了它,则‘2’就可能是第1个画上去的颜色,‘7’就不是
代码还给不了,周末天天都在写作业。。。一点时间都没有。。。你们自己敲吧
第四题思路虽然想到了,但考试时间有限,题目的坑又那么多,没敲完,以后还是得注意,要合理运用考试时间
差不多就到这里吧
E N D