SXOJ844 牛的基因组
来源:互联网 发布:淘宝手机助手苹果版 编辑:程序博客网 时间:2024/06/08 19:12
http://119.23.35.203/oj/contest/194/problems/2
题目的解述其实有点混乱,实际上就是在前n行有污点的奶牛任选三个序号,
对应到后n行没有污点的奶牛的该序号上看是否相同,如果没有一只无污点的奶牛的基因片段与之匹配,
可能的方案数就要增加1.
该题目数据比较水,暴力枚举的话也有人能够拿到80分,但是如果数据较大的时候,就需要用到数据优化来减少时间复杂度。
因为基因片段只有A,C,G,T四种可能性,所以可以将每只牛的基因片段转化为一个4进制的数串,
分别用0,1,2,3对应A,C,G,T。
再开一个三位的4进制数组作为判断该基因组合在无污点奶牛对应位置上是否有出现就可以了。
在写代码的过程中,由于对字符串输入的极度不熟练,在这上面卡了很长时间。。因为不想用cin这个写法
一度写出了scanf("%c",&wd[i][j])导致读入数据都没完整读进来,最后开了char的二维数组,
for(int i=0;i<n;i++)scanf("%s",&wd[i]);使用以上写法成功读入了全部是数据 实在是惭愧
通过这道题目,暴露出了自己对输入都还未能熟练掌握,还是任重而道远啊。
下面是满分通过的代码:
#include<cstdio>#include<string>#include<iostream> using namespace std;char wd[510][55],no[510][55];int WD[510][55],NO[510][55],n,m,o,p,q;int jud[64];bool judge(int x,int y,int z) //x,y,z为三个基因片段对应的下标位置{bool flag=true;for(int i=0;i<n;i++) //对于前n行有污点的奶牛,设x,y,z位置的基因片段组合为形成污点的可能方案,并压缩成三位4进制数标记下来jud[WD[i][x]*16+WD[i][y]*4+WD[i][z]]=1;for(int i=0;i<n;i++)if(jud[NO[i][x]*16+NO[i][y]*4+NO[i][z]]==1) //判断无污点奶牛的对应位置上的基因是否相同,同则为falseflag=false;for(int i=0;i<n;i++)jud[WD[i][x]*16+WD[i][y]*4+WD[i][z]]=0; //恢复标记return flag;}int main(){scanf("%d %d",&n,&m);for(int i=0;i<n;i++){scanf("%s",&wd[i]);}for(int i=0;i<n;i++){scanf("%s",&no[i]);}for(int i=0;i<n;i++) //优化奶牛基因,把A,C,G,T分别对应为0,1,2,3,优化时间复杂度for(int j=0;j<m;j++){if(wd[i][j]=='A') WD[i][j]=0;if(wd[i][j]=='C') WD[i][j]=1;if(wd[i][j]=='G') WD[i][j]=2;if(wd[i][j]=='T') WD[i][j]=3;}for(int i=0;i<n;i++)for(int j=0;j<m;j++){if(no[i][j]=='A') NO[i][j]=0;if(no[i][j]=='C') NO[i][j]=1;if(no[i][j]=='G') NO[i][j]=2;if(no[i][j]=='T') NO[i][j]=3;}int ans=0;for(o=0;o<m;o++)for(p=o+1;p<m;p++)for(q=p+1;q<m;q++) //枚举所有三个基因组合,并判断是否为可能方案if(judge(o,p,q)==true)ans++;printf("%d",ans);}
记录自己走过的OI之路,希望日后自己能越来越强!
阅读全文
0 0
- SXOJ844 牛的基因组
- 牛的基因组学
- 后基因组时代的基因组功能注释
- 基因组学的未解之谜
- 说说基因组的垃圾DNA-Transposable elements
- 计算基因组染色体长度的Python脚本
- 滑窗口统计基因组GC含量的分布
- Docker的性能损耗:以基因组分析流程为例
- 第一个接近完整的六倍体小麦基因组
- 基因组与Python --PyVCF 好用的vcf文件处理器
- 体外应用Cas9系统实现对上百kb的基因组片段的靶向克隆
- Trinity简介(1)--用于无参考基因组的转录组de novo组装
- whole-genome-sequencing Data Analysis 学习笔记3: 测试数据及参考基因组的准备
- 基于基因组数据的癌症亚型发现聚类研究
- 生物信息学常见的数据下载,包括基因组,gtf,bed,注释
- 全基因组重测序
- 基因组(BWT)排序
- 基因组序列特征提取
- android dialog的style简单设置
- maven+svn部署项目环境错误太多怎么办?
- 视频目标检测跟踪--Detect to Track and Track to Detect
- 快速掌握 MongoDB 数据库
- 机器人 里程计 下的 粒子滤波 相关介绍~~,持续更新(gmapping)
- SXOJ844 牛的基因组
- 计算机视觉与图像处理、模式识别、机器学习学科之间的关系
- jsonrpc python实现
- 嵌入式Linux+Android学习路线图+学习进度
- Android 7.1 PopupWindow适配问题
- binary-tree-maximum-path-sum Java code
- Python3.6 20个入门级小程序(五)
- 超链接有哪几种 制作表格时WPS怎么在表格中插入超链接
- linux下安装MySQL数据库5.1.73