1. 程式人生 > >剛哥遇到了感情問題(二) 時間限制:1000 ms | 記憶體限制:65535 KB 難度:1 描述 上一集我們講到 作為工作室老大的剛哥遇到很多女生的追求,你幫他個挑選了個英語成績不錯的物件。在你

剛哥遇到了感情問題(二) 時間限制:1000 ms | 記憶體限制:65535 KB 難度:1 描述 上一集我們講到 作為工作室老大的剛哥遇到很多女生的追求,你幫他個挑選了個英語成績不錯的物件。在你

# include <stdio.h>
# define N 201
char A[][7]={"apple","banana","orange"};  //A->B
char B[][5]={"miss","love","kiss"};
int S[]={4,5,5},num,D[2][N];
char C[N];
int BF(char a[],char b[],int c[]);//返回b字串在a中的個數 c儲存b在a中的下標 從c[num]開始儲存 num為全域性變數
void change(int *a,int *b);//交換函式
void Qsort(int A[][N],int left,int right);//快速排序 升序
int main(){
    int i,j,k;
    //freopen("AAA.txt","r",stdin);
    while(gets(C)){
    for(i=j=num=0;i<3;i++)//用 A[i]匹配C 返回匹配的個數
    {
      k=BF(C,A[i],D[0]);//k記錄A[i]匹配的個數
    while(k--)D[1][j++]=i;//D[1]用來儲存i
    }
    Qsort(D,0,num-1);//以A[0]升序 從下標0---  num-1  一共num個
    for(i=j=0;C[i];i++){//輸出
        if(i==D[0][j]&&j<num)
        {
            printf("%s",B[D[1][j]]);
            i+=S[D[1][j++]];
        }
        else printf("%c",C[i]);
    }
    printf("\n");//輸出回車符
    }
    return 0;
}
int BF(char a[],char b[],int c[]){//返回b字串在a中的個數 c儲存b在a中的下標 從c[num]開始儲存 num為全域性變數
    int i=0,j=0,k=num;//k儲存當前已經匹配的個數
    do{
        if (b[j]&&a[i++]==b[j])++j;//如果匹配成功 繼續向下匹配
        else
        {
            b[j]?(i-=j):(c[num++]=i-j);//b字串到頭了嗎?如果到頭了即b[j]=0 此時 c儲存匹配下標 否則i回溯
            j=0;//無論匹配成功與否  b都要重新和a檢測
        }
    }while(a[i-1]);
    return num-k;//返回b在a中匹配的個數
}
void change(int *a,int *b){//交換函式 交換a b的值
   int c=*a;
   *a=*b;
   *b=c;
}
void Qsort(int A[][N],int left,int right)//不需要知道內部 只需要知道是升序就行了
{
    int i=left,j=right,temp=A[0][left];
    if(left>=right)  return;
    while(i!=j)
    {
        while(A[0][j]>=temp && i<j) j--;
        while(A[0][i]<=temp && i<j)i++;
        if(i<j)
        {
            change(&A[0][i],&A[0][j]);
            change(&A[1][i],&A[1][j]);
        }
}
    change(&A[0][left],&A[0][i]);
    change(&A[1][left],&A[1][i]);
    Qsort(A,left,i-1);
    Qsort(A,i+1,right);
}

相關推薦

分散式系統

《好玩又實在的分散式系統理論》的第二部分主要分析抽象的分散式系統模型並提出問題. 抽象是為了得到能充分描述系統的最少元素,能夠排除干擾,分析本質的作用. 系統模型 程式在分散式系統中執行也就是, 在獨立節點併發執行 通過網路連線節點並伴隨著不確定性

計算機基本知識

區別 隱藏 只讀 了解 用戶 功能 方式 常見 clas 計算機體系: 計算機體系又稱“馮諾依曼體系” ------采用二進制儲存數據和代碼 ------數據和代碼儲存在一起,二者沒有區別 ------計算機中的內存采用線性一維方式尋址 計算機總線: 計算機各種功能部件之間

學設計模式工廠模式

工廠模式 什麼是工廠模式 工廠方法模式(FACTORY METHOD)是一種常用的物件建立型設計模式,此模式的核心精神是封裝類中不變的部分,提取其中個性化善變的部分為獨立類,通過依賴注入以達到解耦、複用和方便後期維護拓展的目的。它的核心結構有四個角色,分別是抽象工廠;具體工廠;抽象產

vue餓--Sticky footer & start星星元件 & flex浮懸窗小標題

1.Sticky footer佈局 1.何為Sticky footer佈局:不管內容區有多少內容,頁尾始終顯示在螢幕的最下方,當內容區域超過螢幕的高度時。頁尾會始終顯示在頁面的最底部。 <!DOCTYPE html> <html lang="en"> <head

菜鳥程式設計師的成長之路——時間都去哪兒

距離我的上篇部落格菜鳥程式設計師的成長之路(一)已經過去六個月的時間,又到了總結收穫的季節。在漫長的六個月裡,發生的了很多的事。殘存在大腦中的記憶(不是腦殘),已經不能將我帶回到去年的九月份,想問自己一句:時間都去哪兒了? 翻閱點點滴滴的筆記回憶這六個月,一切又都歷歷在目。通過時間軸,請您跟我一起回憶過去的

eclipse MAT 分析報告的生成和記憶體消耗分析三步曲

在文章eclipse MAT (二)進行OutOfMemoryError的診斷分析 生成了一個檔案java_pid3708.hprof,這個檔案 在你的專案的根目錄下 一,生成分析報告 首先,啟動前面安裝配置好的 Memory Analyzer tool , 然後選擇選單項 File-

深入Java虛擬機器閱讀感-Java垃圾回收器與記憶體分配策略

垃圾回收器主要演算法:       1、引用計數法。給物件新增一個計數器,當物件被使用時則加1,當引用失效時則減1,當計數為0時則認為該物件可以被回收。由於該算演算法無法解決物件相互引用而計數不會減為0,導致該物件無法回收,所以該演算法不是Java虛擬垃圾回收器

Flink流處理- 時間語義

嚴重 結果 rep 通知 ble eager 自動 行處理 應該 4. 時間語義(Time Semantics) 這章我們會介紹時間語義,以及在流中,對於時間的各種不同的概念的描述。同時我們也會討論一個流處理器在事件亂序的情況下,如何能提供精準的結果,以及如何使用流對歷史

排序時間複雜度為O(nlogn)的排序演算法

時間複雜度為O(nlogn)的排序演算法(歸併排序、快速排序),比時間複雜度O(n²)的排序演算法更適合大規模資料排序。 ## 歸併排序 ### 歸併排序的核心思想 採用“分治思想”,將要排序的陣列從中間分成前後兩個部分,然後對前後兩個部分分別進行排序,再將排序好的兩部分合並在一起,這樣陣列就有序了。

素數距離問題 時間限制3000 ms | 記憶體限制65535 KB 難度2 描述 現在給出一些數要求寫出一個程式輸出這些整數相鄰最近的素數並輸出其相距長度如果左右有等距離長度素數

個人理解:判斷輸入的數是不是輸入只要判斷一個數i從2開始到到i*i小於等於輸入的這個數,對於0,1要直接輸出來0,然後找到左右的兩個素數進行比較大小後打印出即可 #include<stdio.h> #include<string.h>#inclu

兩點距離 時間限制3000 ms | 記憶體限制65535 KB 難度1 描述 輸入兩點座標X1,Y1,X2,Y2(0

#include<stdio.h>#include<math.h>int main(void){int N;float a,b,c,d,result;scanf("%d",&N);          /*表示有多少組的資料要進行計算*/get

學習《第一行代碼》使用實機測試所問題

make 代碼 出現 onf msu field menus action java代碼 實機使用酷派大神F1,添加menu後,右上角不出現菜單,此時在java代碼中加入以下方法在onCreate中運行 private void makeActionOverflowMenu

跟著學習Spring框架--Spring容器

contain 系統 框架 blog 關系 文件路徑 mage 文件系統 技術分享 Spring容器 啟動Spring容器(實例化容器)   -- IOC容器讀取Bean配置創建Bean實例之前,必須對它進行實例化(加載啟動),這樣才可以從容器中獲取Bean的實例並使用

Elasticsearch Query DSL 整理總結—— 要搞懂 Match Query看這篇就夠

目錄 引言 構建示例 match operator 引數 analyzer lenient 引數 Fuzziness fuzzniess 引數 什麼是模糊搜尋? Levenshtein Edit Dist