Trie樹既可用于一般的字典搜索,也可用于索引查找。對于給定的一個字符串a1,a2,a3,...,an.則采用TRIE樹搜索經過n次搜索即可完成一次查找。不過好像還是沒有B樹的搜索效率高,B樹搜索算法復雜度為logt(n+1/2).當t趨向大,搜索效率變得高效。怪不得DB2的訪問內存設置為虛擬內存的一個PAGE大小,而且幀切換頻率降低,無需經常的PAGE切換。
上傳時間: 2016-07-06
上傳用戶:sk5201314
#include <malloc.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #define NULL 0 #define MaxSize 30 typedef struct athletestruct /*運動員*/ { char name[20]; int score; /*分數*/ int range; /**/ int item; /*項目*/ }ATH; typedef struct schoolstruct /*學校*/ { int count; /*編號*/ int serial; /**/ int menscore; /*男選手分數*/ int womenscore; /*女選手分數*/ int totalscore; /*總分*/ ATH athlete[MaxSize]; /**/ struct schoolstruct *next; }SCH; int nsc,msp,wsp; int ntsp; int i,j; int overgame; int serial,range; int n; SCH *head,*pfirst,*psecond; int *phead=NULL,*pafirst=NULL,*pasecond=NULL; void create(); void input () { char answer; head = (SCH *)malloc(sizeof(SCH)); /**/ head->next = NULL; pfirst = head; answer = 'y'; while ( answer == 'y' ) { Is_Game_DoMain: printf("\nGET Top 5 when odd\nGET Top 3 when even"); printf("\n輸入運動項目序號 (x<=%d):",ntsp); scanf("%d",pafirst); overgame = *pafirst; if ( pafirst != phead ) { for ( pasecond = phead ; pasecond < pafirst ; pasecond ++ ) { if ( overgame == *pasecond ) { printf("\n這個項目已經存在請選擇其他的數字\n"); goto Is_Game_DoMain; } } } pafirst = pafirst + 1; if ( overgame > ntsp ) { printf("\n項目不存在"); printf("\n請重新輸入"); goto Is_Game_DoMain; } switch ( overgame%2 ) { case 0: n = 3;break; case 1: n = 5;break; } for ( i = 1 ; i <= n ; i++ ) { Is_Serial_DoMain: printf("\n輸入序號 of the NO.%d (0<x<=%d): ",i,nsc); scanf("%d",&serial); if ( serial > nsc ) { printf("\n超過學校數目,請重新輸入"); goto Is_Serial_DoMain; } if ( head->next == NULL ) { create(); } psecond = head->next ; while ( psecond != NULL ) { if ( psecond->serial == serial ) { pfirst = psecond; pfirst->count = pfirst->count + 1; goto Store_Data; } else { psecond = psecond->next; } } create(); Store_Data: pfirst->athlete[pfirst->count].item = overgame; pfirst->athlete[pfirst->count].range = i; pfirst->serial = serial; printf("Input name:) : "); scanf("%s",pfirst->athlete[pfirst->count].name); } printf("\n繼續輸入運動項目(y&n)?"); answer = getchar(); printf("\n"); } } void calculate() /**/ { pfirst = head->next; while ( pfirst->next != NULL ) { for (i=1;i<=pfirst->count;i++) { if ( pfirst->athlete[i].item % 2 == 0 ) { switch (pfirst->athlete[i].range) { case 1:pfirst->athlete[i].score = 5;break; case 2:pfirst->athlete[i].score = 3;break; case 3:pfirst->athlete[i].score = 2;break; } } else { switch (pfirst->athlete[i].range) { case 1:pfirst->athlete[i].score = 7;break; case 2:pfirst->athlete[i].score = 5;break; case 3:pfirst->athlete[i].score = 3;break; case 4:pfirst->athlete[i].score = 2;break; case 5:pfirst->athlete[i].score = 1;break; } } if ( pfirst->athlete[i].item <=msp ) { pfirst->menscore = pfirst->menscore + pfirst->athlete[i].score; } else { pfirst->womenscore = pfirst->womenscore + pfirst->athlete[i].score; } } pfirst->totalscore = pfirst->menscore + pfirst->womenscore; pfirst = pfirst->next; } } void output() { pfirst = head->next; psecond = head->next; while ( pfirst->next != NULL ) { // clrscr(); printf("\n第%d號學校的結果成績:",pfirst->serial); printf("\n\n項目的數目\t學校的名字\t分數"); for (i=1;i<=ntsp;i++) { for (j=1;j<=pfirst->count;j++) { if ( pfirst->athlete[j].item == i ) { printf("\n %d\t\t\t\t\t\t%s\n %d",i,pfirst->athlete[j].name,pfirst->athlete[j].score);break; } } } printf("\n\n\n\t\t\t\t\t\t按任意建 進入下一頁"); getchar(); pfirst = pfirst->next; } // clrscr(); printf("\n運動會結果:\n\n學校編號\t男運動員成績\t女運動員成績\t總分"); pfirst = head->next; while ( pfirst->next != NULL ) { printf("\n %d\t\t %d\t\t %d\t\t %d",pfirst->serial,pfirst->menscore,pfirst->womenscore,pfirst->totalscore); pfirst = pfirst->next; } printf("\n\n\n\t\t\t\t\t\t\t按任意建結束"); getchar(); } void create() { pfirst = (struct schoolstruct *)malloc(sizeof(struct schoolstruct)); pfirst->next = head->next ; head->next = pfirst ; pfirst->count = 1; pfirst->menscore = 0; pfirst->womenscore = 0; pfirst->totalscore = 0; } void Save() {FILE *fp; if((fp = fopen("school.dat","wb"))==NULL) {printf("can't open school.dat\n"); fclose(fp); return; } fwrite(pfirst,sizeof(SCH),10,fp); fclose(fp); printf("文件已經成功保存\n"); } void main() { system("cls"); printf("\n\t\t\t 運動會分數統計\n"); printf("輸入學校數目 (x>= 5):"); scanf("%d",&nsc); printf("輸入男選手的項目(x<=20):"); scanf("%d",&msp); printf("輸入女選手項目(<=20):"); scanf("%d",&wsp); ntsp = msp + wsp; phead = (int *)calloc(ntsp,sizeof(int)); pafirst = phead; pasecond = phead; input(); calculate(); output(); Save(); }
標簽: 源代碼
上傳時間: 2016-12-28
上傳用戶:150501
采用的是康力山等人確定的實驗參數。 對于n個城市的旅行商問題,其參數如下: 初始溫度:t0=280, 每一個溫度下采用固定的迭代次數L=100n, 溫度的衰減系數alpha=0.92 算法停止的準則是當相鄰兩個溫度得到的解變化很小時算法停止。
上傳時間: 2013-12-16
上傳用戶:xhz1993
! 平面桿系結構靜力分析程序 ! 先處理法源程序 ! ! 主要功能和特點: ! 可調數組 ! 輸入單元結點編號和結點位移編碼; ! 先處理法形成總體剛度陣和結構綜合結點荷載 ! 存儲總剛上三角元素; ! GAUSS消元法解線性代數方程組; ! 計算結點位移和單元桿端力
上傳時間: 2013-12-19
上傳用戶:fanboynet
/** * @author jakcy_wu(wujichun) * * 預測分析--本算法只適用于受周期變化或者波動影響的數據 * 權值移動平均算法 * 本期預測值=(前期值*權數)求和/n * * 默認權值為{1,1,1},取最近3次的平均 * 注意權值和必須=權值集合.length */
標簽: jakcy_wu wujichun author 算法
上傳時間: 2014-01-26
上傳用戶:weiwolkt
簡單的串列埠自我測試持式 測試硬體電路是否正確
標簽: 正
上傳時間: 2015-04-25
上傳用戶:FreeSky
有限期作業安排問題”描述如下:有n個任務J1,J2,...,Jn,每個任務Ji都有一個完成期限di,若任務Ji在它的期限di內完成,則可以獲利Ci(1[i[n) 問如何安排使得總的收益最大(假設完成每一個任務所需時間均為一個單位時間).這個問題適合用貪心算法來解決,貪心算法的出發點是每一次都選擇利潤大的任務來完成以期得到最多的收益 但是對于本問題由于每一個任務都有一個完成的期限,因此在任務安排過程中除了考慮利潤Ci外,還要考慮期限di.
上傳時間: 2016-06-27
上傳用戶:s363994250
手機上的監視程式, 可以監督SMS, MMS, 以及電話和Mail
上傳時間: 2016-09-17
上傳用戶:wang0123456789
內含fulladder結構檔,電路檔,測試檔(testbench)以及執行檔(.do)
上傳時間: 2016-11-25
上傳用戶:wxhwjf
量測可變電阻的類比電壓值,並將10位元的良測結果轉換成ASCII編碼,並輸出到個人電腦上的終端機
標簽:
上傳時間: 2014-01-19
上傳用戶:hzy5825468