<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      簡單的關鍵詞查找實驗(基于C語言)

      準備

      書名數據庫的陣列表示

      關鍵字
      書籍
      B1 B2 B3 B4 B5 B6 B7
      algebra 1 1 1 1 1 1 0
      application 1 0 1 1 1 1 0
      elementary 0 1 1 0 0 0 0
      linear 1 1 1 1 1 0 0
      matrix 0 0 0 0 0 1 1
      theory 0 0 0 0 0 0 1
      • B1. Applied Linear Algebra
      • B2. Elementary Linear Algebra
      • B3. Elementary Linear Algebra with Applications
      • B4. Linear Algebra and Its Applications
      • B5. Linear Algebra with Applications
      • B6. Matrix Algebra with Applications
      • B7. Matrix Theory

      編寫代碼

      • 原本是準備了500本txt小說作為數據庫書目的,如果這樣就得自己在確定關鍵詞,和把這500本小說名通過關鍵詞組成一個數據庫陣列,而且對于中文來說,還得考慮編碼問題和文件操作問題,真要這樣,從我個人能力來估計,費老大功夫還不一定實現,所以干脆簡單點,直接照著線代書上的陣列抄了_
      1. 關鍵詞庫
      unsigned char *key_database[]={
          "algebra",\
          "application",\
          "elementary",\
          "linear",\
          "matrix",\
          "theory"
      };
      
      1. 書目庫
      unsigned char B1[]="Applied Linear Algebra";
      unsigned char B2[]="Elementary Linear Algebra";
      unsigned char B3[]="Elementary Linear Algebra with Applications";
      unsigned char B4[]="Linear Algebra and Its Applications";
      unsigned char B5[]="Linear Algebra with Applications";
      unsigned char B6[]="Matrix Algebra with Applications";
      unsigned char B7[]="Matrix Theory";
      
      unsigned char *book_database[]={B1,B2,B3,B4,B5,B6,B7};
      
      1. 數據庫陣列
      unsigned char database_matrix[7][6]={\
          1,1,0,1,0,0,\
          1,0,1,1,0,0,\
          1,1,1,1,0,0,\
          1,1,0,1,0,0,\
          1,1,0,1,0,0,\
          1,1,0,0,1,0,\
          0,0,0,0,1,1
      };
      
      • 要做這個實驗之前,首先得確定數據庫陣列,行代表書名中包含的關鍵詞的向量,1表示包含,0表示不包含。而我們要做的就是把搜索向量與行向量比較,并且統計出現關鍵詞的次數,然后包含次數多的書靠前顯示。
      1. main.c
      #include <stdio.h>
      #include <stdlib.h>
      #include "init_db.h"      //初始化數據庫頭文件
      #include <string.h>
      #define CASE_SENSITIVE 0   //區分大小寫
      #define CASE_INSENSITIVE 1 //不區分大小寫
      
      void str_all_lowercase(unsigned char *str);//字符串小寫化函數
      char str_cmp_sensitive(unsigned char str1[],unsigned char str2[],unsigned char options);//可選區分比較字符串函數
      void keywords_to_vector(char argc,char *argv[],unsigned char *key_vector);//關鍵詞轉搜索向量函數
      void search_database(unsigned char key_vector[],unsigned char res_vector[]);//搜索數據庫函數
      void sort_search_res(unsigned char res_vector[],unsigned char sort_res_vector[]);//排列搜索結果函數
      
      void main(int argc,char *argv[]){//參數:搜索關鍵詞
      
          char book_count=0,i,j;
          unsigned char key_vector[KEYWORD_NUM]={0};//關鍵詞向量->搜索向量
          unsigned char res_vector[BOOK_NUM]={0};//結果向量
          unsigned char sort_res_vector[BOOK_NUM]={0};//排序的位置向量
          if(argc>=2){
      
              keywords_to_vector(argc,argv,key_vector);//獲取搜索向量
              search_database(key_vector,res_vector);//得到結果向量
              for(i=0;i<BOOK_NUM;i++) sort_res_vector[i]=i;//生成位置向量
              sort_search_res(res_vector,sort_res_vector);//對結果向量進行排序,使得符合搜索的書名靠前
              for(i=0;i<BOOK_NUM;i++){
                  if(res_vector[i]!=0){
                      book_count++;
                      printf("book%d:%s---%d\n",i+1,book_database[sort_res_vector[i]],res_vector[i]);
                  }
              }
              printf("%d books found in total\n",book_count);
          }
          else{
              printf("no arguments\n");
          }
      }
      
      • 關鍵詞轉搜索向量函數
      void keywords_to_vector(char argc,char *argv[],unsigned char *key_vector){
          char *tmp,i,j;
          for(i=1;i<argc;i++){
              tmp=argv[i];
              for(j=0;j<KEYWORD_NUM;j++){
                  key_vector[j]=((0==str_cmp_sensitive(tmp,key_database[j],1))?1:key_vector[j]);
              }
          }
      }
      
      • 搜索數據庫函數
      void search_database(unsigned char key_vector[],unsigned char res_vector[]){
          unsigned char i,j;
          unsigned char *tmp;
          for(i=0;i<BOOK_NUM;i++){
              tmp=database_matrix[i];
              for(j=0;j<KEYWORD_NUM;j++){
                  res_vector[i]+=((tmp[j]==key_vector[j])?tmp[j]:0);
              }
          }
      }
      
      • 排列搜索結果函數
      void sort_search_res(unsigned char res_vector[],unsigned char sort_res_vector[]){
          unsigned char i,j,tmp;
          for(i=0;i<BOOK_NUM;i++){
              for(j=BOOK_NUM-1;j>i;j--){
                  if(res_vector[j]>res_vector[j-1]){
                      tmp=res_vector[j-1];
                      res_vector[j-1]=res_vector[j];
                      res_vector[j]=tmp;
                      tmp=sort_res_vector[j-1];
                      sort_res_vector[j-1]=sort_res_vector[j];
                      sort_res_vector[j]=tmp;
                  }
              }
          }
      }
      

      調試過程

      • 低級錯誤
        ?在函數str_all_lowercase中有兩處低級錯誤一個是數組的位移變量i沒有做++操作導致死循環在那里,然后在判斷是否大寫的時候用的是邏輯或||運算,而正確的是邏輯與&&運算。

      • 邏輯錯誤
        ?在函數keywords_to_vector中的
        key_vector[j]=((0==str_cmp_sensitive(tmp,key_database[j],1))?1:key_vector[j]); 這里
        原本我是這樣寫的
        key_vector[j]=((0==str_cmp_sensitive(tmp,key_database[j],1))?1:0;
        這就導致把我每一次對比關鍵詞的時候都會破壞上一次比較的結果,所以把0改為key_vector[j]后就可以保持上一次結果不變。
        ?在函數search_database中的
        res_vector[i]+=((tmp[j]==key_vector[j])?tmp[j]:0);
        原本我是這樣寫的
        res_vector[i]+=((tmp[j]==key_vector[j])?1:0);
        這就導致只要我的搜索向量和數據庫陣列比較結果一致時就會在結果向量上加一,這就導致同為0時,即書名不包含的關鍵詞,同時搜索向量也不包含時,結果向量還要加1,所以最后把1改為tmp[j],即可當同時不包含關鍵詞時結果向量加的是0。

      運行結果

      小結

      ?其實這樣的實驗老早就想要做了,我說這樣的實驗是指,把數學應用通過編程的手段來表達的實驗,或者更深一層次,我想用編程來學習數學,像是線代,微積分這些。老實說,我數學真的是垃圾,匆匆20+年,感覺連門把手都夠不著,很急,非常急,急出心理變態了,急出生理病變了,老子tmd什么時候能進入數學的殿堂,什么時候能tmd玩弄數學于股掌之間,tmd什么時候能會應用數學啊,啊啊啊。我現在只能另辟蹊徑,尋找一些應用的機會,除了這樣,我無計可施,因為我無法面對深奧的書本,無法面對難懂的公式,更無法面對亂入的定理和結論。我也想造原子彈,我也想玩加速器,我也tmd想搞量子力學和人工智能,還tmd想如果給關二爺上香有用的話,那我鐵定天天給畢達哥拉斯磕頭,我甚至還tmd想長生不老,能讓我等到打一針就能智商300的藥,夢一場就能貫通古今的覺,如果有人做這樣的實驗,請立即叫上我,我也這能通過這種方式了,真卑微啊,這樣一想我還真是一個徹徹底底的,真真切切的變態啊,哎,艸了,就當是一個渣人的本愿吧。

      posted @ 2022-07-09 18:40  pie_thn  閱讀(186)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产一区二区三区在线观看免费| 婷婷开心深爱五月天播播 | 亚洲精品三区二区一区一| 宜兰县| 九九综合va免费看| 青青草国产精品日韩欧美| 日韩精品一区二区亚洲av| 亚洲高清日韩heyzo| 亚洲成av人片天堂网无码 | 亚洲乱理伦片在线观看中字| 少妇人妻偷人精品系列| 精品国产一区二区三区av色诱| 午夜精品国产自在| 国产日韩综合av在线| 色8久久人人97超碰香蕉987| 成人午夜电影福利免费| 女人腿张开让男人桶爽| 亚洲一区二区三区人妻天堂| 国内在线视频一区二区三区| 亚洲一区二区色情苍井空| 国产精品免费观看色悠悠| 国产免费高清69式视频在线观看| JIZZJIZZ国产| 水蜜桃精品综合视频在线| 91中文字幕一区二区| 亚洲中文字幕无码一区无广告 | 精品av综合导航| 人人澡人人透人人爽| 亚洲 欧洲 无码 在线观看| 国产午夜精品福利91| 日韩大片高清播放器| 国产va免费精品观看| 风韵丰满熟妇啪啪区老熟熟女| 国产精品十八禁在线观看| 亚洲国产精品自产在线播放| 亚洲人成人一区二区三区| 亚洲男人天堂2018| 国产视频 视频一区二区| 亚洲国产成人久久77| 人妻夜夜爽天天爽三区麻豆av| 国产中文字幕在线精品|