3-7 uva 1368 - DNA Consensus String
来源:互联网 发布:淘宝手机版功能介绍 编辑:程序博客网 时间:2024/04/28 06:52
背景:最早题目读错以为是在那几个中选一个,结果是自己造一个····改完wa一次,我感觉不会是最后一个空行的问题吧,改了还是wa。觉得不科学,发现样例中都是下一组的长度比上一组长,感觉自己的有点问题,试了一下果然下一组比上一组短的话就会出错。果然加了memset之后a了。
学习:本题只要找出每一列hamming值的和最小的字母这样就能保证找出来的整个序列最小,并且利用一个数组ACGT按字典序,这样最先找到的肯定是字典序最小的就不用管了。犯的错误就在于如果利用数组存储将要输出的字符时 , 需要每组都进行初始化,避免之前的字符还存在那个数组中跟着输出。或者换一个想法将每个找到的字符直接打印出来不存储。 还有一个就是在输入的时候如果保证没有空字符就可以直接用scanf("%s"), 不需要利用getchar变得更加麻烦。
#include<stdio.h>#include<string.h>char s[52][1005];char b[5]="ACGT";char a[1005]; //储存目前hamming最小且字典序最小的符合条件的序列 int f(int m,int n) //m代表第几列 n代表总共有几行 {<span style="white-space:pre"></span>int i,j,count=0;<span style="white-space:pre"></span>int min=10006;<span style="white-space:pre"></span>for(i=0;i<4;i++)<span style="white-space:pre"></span>{<span style="white-space:pre"></span>count=0;<span style="white-space:pre"></span>for(j=0;j<n;j++)<span style="white-space:pre"></span>{<span style="white-space:pre"></span>if(b[i]!=s[j][m])<span style="white-space:pre"></span>count++;<span style="white-space:pre"></span>}<span style="white-space:pre"></span>if(min>count)<span style="white-space:pre"></span>{<span style="white-space:pre"></span>min=count;<span style="white-space:pre"></span>a[m]=b[i];<span style="white-space:pre"></span>}<span style="white-space:pre"></span>}<span style="white-space:pre"></span>//printf("%c",a[m]); //也可以采用这种写法 就不需要memset <span style="white-space:pre"></span>return min;}int main (){<span style="white-space:pre"></span>int t;<span style="white-space:pre"></span>scanf("%d",&t);<span style="white-space:pre"></span>while (t--)<span style="white-space:pre"></span>{<span style="white-space:pre"></span>int x,y;<span style="white-space:pre"></span>scanf("%d %d",&x,&y);<span style="white-space:pre"></span>int i,j;<span style="white-space:pre"></span>int sum=0;<span style="white-space:pre"></span>memset(a,'\0',sizeof(a));<span style="white-space:pre"></span>for(i=0;i<x;i++)<span style="white-space:pre"></span>{<span style="white-space:pre"></span>/*for(j=0;j<y;j++)<span style="white-space:pre"></span>{<span style="white-space:pre"></span>s[i][j]=getchar();<span style="white-space:pre"></span>if(s[i][j]=='\n'||s[i][j]==' ')<span style="white-space:pre"></span>j--;<span style="white-space:pre"></span>} */<span style="white-space:pre"></span>scanf("%s",s[i]);<span style="white-space:pre"></span>}<span style="white-space:pre"></span>for(j=0;j<y;j++)<span style="white-space:pre"></span>{<span style="white-space:pre"></span>sum+=f(j,x); //j代表第几列 <span style="white-space:pre"></span>}<span style="white-space:pre"></span>printf("%s\n",a);<span style="white-space:pre"></span>printf("%d\n",sum);<span style="white-space:pre"></span>}<span style="white-space:pre"></span>return 0;}
0 0
- 3-7 uva 1368 - DNA Consensus String
- 【习题3-7】 UVA - 1368 DNA Consensus String
- UVA 1368 - DNA Consensus String
- uva 1368 DNA Consensus String
- Uva-1368-DNA Consensus String
- UVa 1368 DNA Consensus String
- UVA 1368 DNA Consensus String
- UVA 1368 DNA Consensus String
- UVa:1368 DNA Consensus String
- uva 1368 - DNA Consensus String
- UVa 1368 - DNA Consensus String
- UVa 1368 - DNA Consensus String
- UVa 1368 DNA Consensus String
- UVa 1368 - DNA Consensus String
- UVA - 1368 DNA Consensus String
- UVa 1368DNA Consensus String
- UVa 1368 - DNA Consensus String
- Uva 1368 DNA Consensus String
- 码上展二维码:让企业销售突破时间与空间的界限
- iOS App性能优化
- Objective - C基础: 第四天 - 6.类的本质
- OPENWRT传感器实验
- linux下通过mount挂载iscsi、ntfs、nfs详解
- 3-7 uva 1368 - DNA Consensus String
- 实证精神
- HDU-2555-人人都能参加第30届校田径运动会了
- 采用FLAG_ACTIVITY_CLEAR_TOP退出整个程序(多activity)
- Activity设置singleTask无法通过Intent获取值的问题
- OpenCV running
- 自制下载列表导入迅雷7实现批量下载
- UVa 10050 - Hartals
- 基于3G网络的汽车防盗报警系统视频监控设计