第一次写理解错题目意思了。。。以为是在输入的DNA序列中寻找出一个序列使其总和最小。
下面是理解错题目意思后写的代码(!。!)
关于字序排序呢,这里用了一个set集合,因为set集合中的元素本来就是排好序的(!。!)
#include<bits/stdc++.h> using namespace std; int main() { set<string> Set; int n,m; char map[100][100]; scanf("%d%d",&n,&m); for(int i=0; i<n; i++) scanf("%s",map[i]); int ss[100],s=0; int count=0; for(int i=0; i<n; i++) { count=0; for(int j=0; j<m; j++) { for(int k=0; k<n; k++) { if(map[i][j]!=map[k][j]&&i!=k) { count++; } } } ss[s++]=count; } int min=10000; int xb; for(int i=0; i<s; i++) { if(ss[i]<=min) { min=ss[i]; xb=i; } } for(int i=0;i<s;i++) { if(min==ss[i]) Set.insert(map[i]); } set<string>::iterator it; //定义前向迭代器 //中序遍历集合中的所有元素 it=Set.begin(); cout<<*it; printf("\n%d\n",ss[xb]); return 0; } /* 3 5 8 TATGATAC TAAGCTAC AAAGATCC TGAGATAC TAAGATGT 4 10 ACGTACGTAC CCGTACGTAG GCGTACGTAT TCGTACGTAA 6 10 ATGTTACCAT AAGTTACGAT AACAAAGCAA AAGTTACCTT AAGTTACCAA TACTTACCAA */