Openjudge计算概论-DNA排序
/*===================================== DNA排序 总时间限制: 1000ms 内存限制: 65536kB 描述 给出一系列基因序列,由A,C,G,T四种字符组成。对于每一个序列,定义其逆序对如下: 序列中任意一对字符X和Y,若Y在X的右边(不一定相邻)且Y < X,则称X和Y为一个逆序对。 例如GAC这个序列,其中GC,GA都是逆序对。 一个序列的逆序对越多,则认为其"无序度"越高。你的任务是将基因按照无序度从小到大的顺序排序,如果存在无序度相同的序列,则按照原始输入顺序输出。 输入 首先是基因序列的长度n(0 < n <= 50)和基因序列的个数m ( 0 < m <= 100). 然后依次是这m个基因序列. 输出 输出排序后的m个基因序列。 样例输入 10 6 AACATGAAGG TTTTGGCCAA TTTGGCCAAA GATCAGATTT CCCGGGGGGA ATCGATGCAT 样例输出 CCCGGGGGGA AACATGAAGG GATCAGATTT ATCGATGCAT TTTTGGCCAA TTTGGCCAAA
思路:
用结构体数组存储每一个字符串和字符串的逆序对个数。
流程:
循环:输入字符串——统计逆序对
排序
输出 ======================================*/

1 #include<stdio.h> 2 struct DNA 3 { 4 char a[50];//一个基因序列 5 int num;//本基因序列的逆序对个数 6 }; 7 int niXuDui(struct DNA d,int len);//统计DNA序列变量d的逆序对个数 8 int main() 9 { 10 struct DNA d[100],t; 11 int n,m,i,j,flag; 12 freopen("5.in","r",stdin); 13 scanf("%d%d",&n,&m); 14 for(i=0;i<m;i++) 15 { 16 scanf("%s",d[i].a); 17 d[i].num=niXuDui(d[i],n); 18 } 19 20 for(i=1;i<m;i++) 21 { 22 flag=1; 23 for(j=0;j<m-i;j++) 24 { 25 if(d[j].num>d[j+1].num) 26 { 27 flag=0; 28 t=d[j]; 29 d[j]=d[j+1]; 30 d[j+1]=t; 31 } 32 } 33 if(flag) break; //if(flag==1) break; 34 } 35 for(i=0;i<m;i++) 36 { 37 printf("%s\n",d[i].a); 38 } 39 return 0; 40 } 41 int niXuDui(struct DNA d,int len)//统计DNA序列变量d的逆序对个数 42 { 43 int ans=0,i,j; 44 for(i=0;i<len;i++) 45 { 46 for(j=i+1;j<len;j++) 47 { 48 if(d.a[j]<d.a[i]) ans++; 49 } 50 } 51 return ans; 52 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App