| Welcome to Leon's Blog |
|
|||
|
日歷
統計
導航常用鏈接留言簿(4)隨筆分類隨筆檔案
ACM搜索最新評論
|
昨天晚上寫完了這道題,早上過來提交。 主要用到了插入排序算法,并且參看了桶排序算法,如果大家有什么好的想法,希望能夠共享一下,嘿嘿!我的代碼有哪里寫的不好,也請大家指教!
1
#include <stdlib.h>2 #include <stdio.h>3 typedef struct dNANumber4 ![]() ![]() {5 char ch[100];6 int count;7 }DNANumber;8 ![]() 9 void Sort(DNANumber *arr, int rows)10 ![]() ![]() {11 int i, j;12 DNANumber temp;13 for(i = 1; i < rows; i++)14 ![]() {15 temp = arr[i];16 for(j = i-1; j >= 0; j--)17 ![]() {18 if(arr[j].count > temp.count)19 arr[j+1] = arr[j];20 else 21 break;22 }23 arr[j+1] = temp;24 }25 return;26 }27 ![]() 28 int Index(char ch)29 ![]() ![]() {30 switch(ch)31 ![]() {32 case 'A':33 return 0;34 case 'C':35 return 1;36 case 'G':37 return 2;38 case 'T':39 return 3;40 }41 }42 ![]() 43 void CountNumber(DNANumber *dna, int length)44 ![]() ![]() {45 int count = 0;46 ![]() int letter[4] = {0,0,0,0};47 int i, j;48 int temp;49 50 for(i = 0; i < length; i++)51 ![]() {52 letter[Index(dna->ch[i])]++;53 }54 ![]() 55 for(i = length-1; i >= 0; i--)56 ![]() {57 temp = Index(dna->ch[i]);58 for(j = temp+1; j < 4; j++)59 ![]() {60 count += letter[j];61 }62 letter[temp]--; 63 }64 dna->count = count;65 return;66 }67 int main(int argc, char* argv[])68 ![]() ![]() {69 int length = 0, rows = 0;70 int i;71 DNANumber dnaArray[10000];72 //DNANumber *dna;73 ![]() 74 scanf("%d %d", &length, &rows);75 for(i = 0; i < rows; i++)76 ![]() {77 dnaArray[i].count=0;78 scanf("%s", dnaArray[i].ch);79 CountNumber(&dnaArray[i], length); 80 }81 ![]() 82 Sort(dnaArray, rows);83 ![]() 84 for(i = 0; i < rows; i++)85 ![]() {86 printf("%s\n", dnaArray[i].ch);87 }88 return 0;89 }90 ![]() 91 ![]() 92 ![]()
評論:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
|
| Copyright © Leon916 | Powered by: 博客園 模板提供:滬江博客 |