UVA1368解题报告
来源:互联网 发布:阮一峰博客 js面向对象 编辑:程序博客网 时间:2024/06/03 10:00
我的一个审题误区是以为要在这几个序列里找到ham值最小的,实际上并不是这样,他要的是一个最小的ham值的DNA序列,并不一定要在已有的DNA序列里。所以这个简单了不少,因为我们可以一列一列的比较,一列一个字符的输出。这省去了我的不少开销。要相似度最大输出每列出现频率最高的即可,因为只有四个字符用map映射即可。
附上AC代码Time 0ms
#include<cstdio>#include<iostream>#include<cstring>#include<string>#include<map>#include<algorithm>using namespace std;const int maxm=50+10;const int maxn=1000+10;const char dna[]="TAGC";int main(){ int T; scanf("%d",&T); while(T--) { int m,n,ham=0; map<char,int> mm[maxn]; string DNA[maxm]; scanf("%d %d",&m,&n); for(int i=0;i<m;i++) cin>>DNA[i]; for(int i=0;i<n;i++) //init for(int j=0;j<4;j++) mm[i][dna[j]]=0; for(int i=0;i<n;i++) for(int j=0;j<m;j++) { char c=DNA[j][i]; mm[i][c]++; } for(int i=0;i<n;i++) { int pos=0,ans=0; for(int j=0;j<4;j++) { char c=dna[j]; int temp=mm[i][c]; if(temp>ans) { ans=temp; pos=j; } else{ if(temp==ans){ if(dna[j]<dna[pos]) pos=j; ans=temp; } } } ham+=(m-ans); printf("%c",dna[pos]); } printf("\n%d\n",ham); }}
阅读全文
1 0
- UVA1368解题报告
- UVA1368
- uva1368
- Uva1368
- UVa1368
- UVA1368
- UVa1368
- UVa1368
- 解题报告
- 解题报告
- 解题报告
- 解题报告
- 解题报告
- 解题报告
- 解题报告
- Antiprime解题报告
- expr解题报告
- 华容道解题报告
- Java抽象类与接口的区别
- web前端之Javascript的this用法
- 【git】1.git简介及安装
- ImageLoad+RollViewPage+Jsoup+WebView带你轻松实现抓取网页数据(附源码)
- Problem B: 一切皆对象
- UVA1368解题报告
- hdu 1035 robot motion
- Kotlin编程之泛型
- 滚动条
- VS+opencv应用程序无法正常启动
- Make(2)
- ISP-黑电平校正(BLC)
- java 本地事务
- SQLite系列笔记之环境搭建