給你A,B兩個字符串,檢查B串是否是A串的子串,類似于Java的String.indexOf("")。找到匹配失敗時的最合適的回退位置,而不是簡單的回退到子串的第一個字符(常規的枚舉查找方式,是簡單的回退到子串的第一個字符,KMP算法的性能分析Java實現實例)*此僅供大家參考、交流,希望對大家有所幫助!
標簽: 字符串
上傳時間: 2017-05-20
上傳用戶:498732662
含原理圖+電路圖+程序的波形發生器:在工作中,我們常常會用到波形發生器,它是使用頻度很高的電子儀器。現在的波形發生器都采用單片機來構成。單片機波形發生器是以單片機核心,配相應的外圍電路和功能軟件,能實現各種波形發生的應用系統,它由硬件部分和軟件部分組成,硬件是系統的基礎,軟件則是在硬件的基礎上,對其合理的調配和使用,從而完成波形發生的任務。 波形發生器的技術指標:(1) 波形類型:方型、正弦波、三角波、鋸齒波;(2) 幅值電壓:1V、2V、3V、4V、5V;(3) 頻率值:10HZ、20HZ、50HZ、100HZ、200HZ、500HZ、1KHZ;(4) 輸出極性:雙極性操作設計1、 機器通電后,系統進行初始化,LED在面板上顯示6個0,表示系統處于初始狀態,等待用戶輸入設置命令,此時,無任何波形信號輸出。2、 用戶按下“F”、“V”、“W”,可以分別進入頻率,幅值波形設置,使系統進入設置狀態,相應的數碼管顯示“一”,此時,按其它鍵,無效;3、 在進入某一設置狀態后,輸入0~9等數字鍵,(數字鍵僅在設置狀態時,有效)為欲輸出的波形設置相應參數,LED將參數顯示在面板上;4、 如果在設置中,要改變已設定的參數,可按下“CL”鍵,清除所有已設定參數,系統恢復初始狀態,LED顯示6個0,等待重新輸入命令;5、 當必要的參數設定完畢后,所有參數顯示于LED上,用戶按下“EN”鍵,系統會將各波形參數傳遞到波形產生模塊中,以便控制波形發生,實現不同頻率,不同電壓幅值,不同類型波形的輸出;6、 用戶按下“EN”鍵后,波形發生器開始輸出滿足參數的波形信號,面板上相應類型的運行指示燈閃爍,表示波形正在輸出,LED顯示波形類型編號,頻率值、電壓幅值等波形參數;7、 波形發生器在輸出信號時,按下任意一個鍵,就停止波形信號輸出,等待重新設置參數,設置過程如上所述,如果不改變參數,可按下“EN”鍵,繼續輸出原波形信號;8、 要停止波形發生器的使用,可按下復位按鈕,將系統復位,然后關閉電源。硬件組成部分通過綜合比較,決定選用獲得廣泛應用,性能價格高的常用芯片來構成硬件電路。單片機采用MCS-51系列的89C51(一塊),74LS244和74LS373(各一塊),反相驅動器 ULN2803A(一塊),運算放大器 LM324(一塊) 波形發生器的硬件電路由單片機、鍵盤顯示器接口電路、波形轉換(D/ A)電路和電源線路等四部分構成。1.單片機電路功能:形成掃描碼,鍵值識別,鍵功能處理,完成參數設置;形成顯示段碼,向LED顯示接口電路輸出;產生定時中斷;形成波形的數字編碼,并輸出到D/A接口電路;如電路原理圖所示: 89C51的P0口和P2口作為擴展I/O口,與8255、0832、74LS373相連接,可尋址片外的寄存器。單片機尋址外設,采用存儲器映像方式,外部接口芯片與內部存儲器統一編址,89C51提供16根地址線P0(分時復用)和P2,P2口提供高8位地址線,P0口提供低8位地址線。P0口同時還要負責與8255,0832的數據傳遞。P2.7是8255的片選信號,P2.6是0832(1)的片選,P2.5是0832(2)的片選,低電平有效,P0.0、P0.1經過74LS373鎖存后,送到8255的A1、A2作,片內A口,B口,C口,控制口等寄存器的字選。89C51的P1口的低4位連接4只發光三極管,作為波形類型指示燈,表示正在輸出的波形是什么類型。單片機89C51內部有兩個定時器/計數器,在波形發生器中使用T0作為中斷源。不同的頻率值對應不同的定時初值,定時器的溢出信號作為中斷請求。控制定時器中斷的特殊功能寄存器設置如下:定時控制寄存器TCON=(00010000)工作方式選擇寄存器(TMOD)=(00000000)中斷允許控制寄存器(IE)=(10000010)2、鍵盤顯示器接口電路功能:驅動6位數碼管動態顯示; 提供響應界面; 掃面鍵盤; 提供輸入按鍵。由并口芯片8255,鎖存器74LS273,74LS244,反向驅動器ULN2803A,6位共陰極數碼管(LED)和4×4行列式鍵盤組成。8255的C口作為鍵盤的I/O接口,C口的低4位輸出到掃描碼,高4位作為輸入行狀態,按鍵的分布如圖所示。8255的A口作為LED段碼輸出口,與74LS244相連接,B口作為LED的位選信號輸出口,與ULN2803A相連接。8255內部的4個寄存器地址分配如下:控制口:7FFFH , A口:7FFFCH , B口:7FFDH , C口:7FFEH 3、D/A電路功能:將波形樣值的數字編碼轉換成模擬值;完成單極性向雙極性的波形輸出;構成由兩片0832和一塊LM324運放組成。0832(1)是參考電壓提供者,單片機向0832(1)內的鎖存器送數字編碼,不同的編碼會產生不同的輸出值,在本發生器中,可輸出1V、2V、3V、4V、5V等五個模擬值,這些值作為0832(2)的參考電壓,使0832(2)輸出波形信號時,其幅度是可調的。0832(2)用于產生各種波形信號,單片機在波形產生程序的控制下,生成波形樣值編碼,并送到0832(2)中的鎖存器,經過D/A轉換,得到波形的模擬樣值點,假如N個點就構成波形的一個周期,那么0832(2)輸出N個樣值點后,樣值點形成運動軌跡,就是波形信號的一個周期。重復輸出N個點后,由此成第二個周期,第三個周期……。這樣0832(2)就能連續的輸出周期變化的波形信號。運放A1是直流放大器,運放A2是單極性電壓放大器,運放A3是雙極性驅動放大器,使波形信號能帶得起負載。地址分配:0832(1):DFFFH ,0832(2):BFFFH4、電源電路:功能:為波形發生器提供直流能量;構成由變壓器、整流硅堆,穩壓塊7805組成。220V的交流電,經過開關,保險管(1.5A/250V),到變壓器降壓,由220V降為10V,通過硅堆將交流電變成直流電,對于諧波,用4700μF的電解電容給予濾除。為保證直流電壓穩定,使用7805進行穩壓。最后,+5V電源配送到各用電負載。
上傳時間: 2013-11-08
上傳用戶:685
(1) 、用下述兩條具體規則和規則形式實現.設大寫字母表示魔王語言的詞匯 小寫字母表示人的語言詞匯 希臘字母表示可以用大寫字母或小寫字母代換的變量.魔王語言可含人的詞匯. (2) 、B→tAdA A→sae (3) 、將魔王語言B(ehnxgz)B解釋成人的語言.每個字母對應下列的語言.
上傳時間: 2013-12-30
上傳用戶:ayfeixiao
1. 下列說法正確的是 ( ) A. Java語言不區分大小寫 B. Java程序以類為基本單位 C. JVM為Java虛擬機JVM的英文縮寫 D. 運行Java程序需要先安裝JDK 2. 下列說法中錯誤的是 ( ) A. Java語言是編譯執行的 B. Java中使用了多進程技術 C. Java的單行注視以//開頭 D. Java語言具有很高的安全性 3. 下面不屬于Java語言特點的一項是( ) A. 安全性 B. 分布式 C. 移植性 D. 編譯執行 4. 下列語句中,正確的項是 ( ) A . int $e,a,b=10 B. char c,d=’a’ C. float e=0.0d D. double c=0.0f
上傳時間: 2017-01-04
上傳用戶:netwolf
實驗源代碼 //Warshall.cpp #include<stdio.h> void warshall(int k,int n) { int i , j, t; int temp[20][20]; for(int a=0;a<k;a++) { printf("請輸入矩陣第%d 行元素:",a); for(int b=0;b<n;b++) { scanf ("%d",&temp[a][b]); } } for(i=0;i<k;i++){ for( j=0;j<k;j++){ if(temp[ j][i]==1) { for(t=0;t<n;t++) { temp[ j][t]=temp[i][t]||temp[ j][t]; } } } } printf("可傳遞閉包關系矩陣是:\n"); for(i=0;i<k;i++) { for( j=0;j<n;j++) { printf("%d", temp[i][ j]); } printf("\n"); } } void main() { printf("利用 Warshall 算法求二元關系的可傳遞閉包\n"); void warshall(int,int); int k , n; printf("請輸入矩陣的行數 i: "); scanf("%d",&k); 四川大學實驗報告 printf("請輸入矩陣的列數 j: "); scanf("%d",&n); warshall(k,n); }
上傳時間: 2016-06-27
上傳用戶:梁雪文以
#include "iostream" using namespace std; class Matrix { private: double** A; //矩陣A double *b; //向量b public: int size; Matrix(int ); ~Matrix(); friend double* Dooli(Matrix& ); void Input(); void Disp(); }; Matrix::Matrix(int x) { size=x; //為向量b分配空間并初始化為0 b=new double [x]; for(int j=0;j<x;j++) b[j]=0; //為向量A分配空間并初始化為0 A=new double* [x]; for(int i=0;i<x;i++) A[i]=new double [x]; for(int m=0;m<x;m++) for(int n=0;n<x;n++) A[m][n]=0; } Matrix::~Matrix() { cout<<"正在析構中~~~~"<<endl; delete b; for(int i=0;i<size;i++) delete A[i]; delete A; } void Matrix::Disp() { for(int i=0;i<size;i++) { for(int j=0;j<size;j++) cout<<A[i][j]<<" "; cout<<endl; } } void Matrix::Input() { cout<<"請輸入A:"<<endl; for(int i=0;i<size;i++) for(int j=0;j<size;j++){ cout<<"第"<<i+1<<"行"<<"第"<<j+1<<"列:"<<endl; cin>>A[i][j]; } cout<<"請輸入b:"<<endl; for(int j=0;j<size;j++){ cout<<"第"<<j+1<<"個:"<<endl; cin>>b[j]; } } double* Dooli(Matrix& A) { double *Xn=new double [A.size]; Matrix L(A.size),U(A.size); //分別求得U,L的第一行與第一列 for(int i=0;i<A.size;i++) U.A[0][i]=A.A[0][i]; for(int j=1;j<A.size;j++) L.A[j][0]=A.A[j][0]/U.A[0][0]; //分別求得U,L的第r行,第r列 double temp1=0,temp2=0; for(int r=1;r<A.size;r++){ //U for(int i=r;i<A.size;i++){ for(int k=0;k<r-1;k++) temp1=temp1+L.A[r][k]*U.A[k][i]; U.A[r][i]=A.A[r][i]-temp1; } //L for(int i=r+1;i<A.size;i++){ for(int k=0;k<r-1;k++) temp2=temp2+L.A[i][k]*U.A[k][r]; L.A[i][r]=(A.A[i][r]-temp2)/U.A[r][r]; } } cout<<"計算U得:"<<endl; U.Disp(); cout<<"計算L的:"<<endl; L.Disp(); double *Y=new double [A.size]; Y[0]=A.b[0]; for(int i=1;i<A.size;i++ ){ double temp3=0; for(int k=0;k<i-1;k++) temp3=temp3+L.A[i][k]*Y[k]; Y[i]=A.b[i]-temp3; } Xn[A.size-1]=Y[A.size-1]/U.A[A.size-1][A.size-1]; for(int i=A.size-1;i>=0;i--){ double temp4=0; for(int k=i+1;k<A.size;k++) temp4=temp4+U.A[i][k]*Xn[k]; Xn[i]=(Y[i]-temp4)/U.A[i][i]; } return Xn; } int main() { Matrix B(4); B.Input(); double *X; X=Dooli(B); cout<<"~~~~解得:"<<endl; for(int i=0;i<B.size;i++) cout<<"X["<<i<<"]:"<<X[i]<<" "; cout<<endl<<"呵呵呵呵呵"; return 0; }
標簽: 道理特分解法
上傳時間: 2018-05-20
上傳用戶:Aa123456789
DS1302 是 DALLAS 公司推出的涓流充電時鐘芯用 內含有一個實時時鐘/日歷和31字節靜態RAM,通過簡單的串行接口與單片機進行通信。實時時鐘/日歷電路提供秒、分、時、日、日期、月、年的信息,每月的天數和閏年的天數可自動調整,時鐘操作可通過AM/PM指示決定采用24或12 小時格式。DS1302 與單片機之間能簡單地采用同步串行的方式進行通信,僅需用到三個口線: (DRES(復位),(2)I/O(數據線), (B)SCLK(事行時鐘)。時鐘/RAM的讀/寫數據以會個字節或多達31個字節的字符組方式通信。DS1302 工作時功耗很低,保持數據和時鐘信息時功率小于1mW。 DS1302是由DS1202 改進而來,增加了以下的特性:雙電源管腳用于主電源和備份電源供應,Vcc!為可編程涓流充電電源,附加七個字節存儲器。它廣泛應用于電話、傳真、便攜式儀器以及電池供電的儀器儀表等產品領域。
上傳時間: 2022-01-06
上傳用戶:zhanglei193
AR0231AT7C00XUEA0-DRBR(RGB濾光)安森美半導體推出采用突破性減少LED閃爍 (LFM)技術的新的230萬像素CMOS圖像傳感器樣品AR0231AT,為汽車先進駕駛輔助系統(ADAS)應用確立了一個新基準。新器件能捕獲1080p高動態范圍(HDR)視頻,還具備支持汽車安全完整性等級B(ASIL B)的特性。LFM技術(專利申請中)消除交通信號燈和汽車LED照明的高頻LED閃爍,令交通信號閱讀算法能于所有光照條件下工作。AR0231AT具有1/2.7英寸(6.82 mm)光學格式和1928(水平) x 1208(垂直)有源像素陣列。它采用最新的3.0微米背照式(BSI)像素及安森美半導體的DR-Pix?技術,提供雙轉換增益以在所有光照條件下提升性能。它以線性、HDR或LFM模式捕獲圖像,并提供模式間的幀到幀情境切換。 AR0231AT提供達4重曝光的HDR,以出色的噪聲性能捕獲超過120dB的動態范圍。AR0231AT能同步支持多個攝相機,以易于在汽車應用中實現多個傳感器節點,和通過一個簡單的雙線串行接口實現用戶可編程性。它還有多個數據接口,包括MIPI(移動產業處理器接口)、并行和HiSPi(高速串行像素接口)。其它關鍵特性還包括可選自動化或用戶控制的黑電平控制,支持擴頻時鐘輸入和提供多色濾波陣列選擇。封裝和現狀:AR0231AT采用11 mm x 10 mm iBGA-121封裝,現提供工程樣品。工作溫度范圍為-40℃至105℃(環境溫度),將完全通過AEC-Q100認證。
標簽: 圖像傳感器
上傳時間: 2022-06-27
上傳用戶:XuVshu
倚天版增強型編程試驗一體化開發套件,適合于零基礎,或者初中級單片機愛好者使用,并適合于單片機程序員的前期試驗。他由一個多功能的51燒寫器和一個具有擴展功能的多功能試驗板組成。同時標配2片試驗用AT89S51,串行試驗電纜,遙控器,1602液晶屏。您不需要另外購買其他任何材料即可完成51單片機的流水燈,小鍵盤,數碼管動態顯示,數碼管靜態顯示,計數器,小喇叭報警器,唱歌。串口通信試驗,24c04擴展,外中斷,紅外遙控,液晶顯示等試驗。在同類產品中,本品率先采用流水線波峰焊接,彩色外包裝設計,采用藍色雙面PCB,4角特別貼心銅柱固定,品質非常穩定。
上傳時間: 2013-10-23
上傳用戶:TF2015
ADT串的實現:主要包括以下操作:§ copy(s1,s2)把串s1復制到s2 § concat(s,s1,s2)連接S1,S2,結果放在S中 § delete(s,i,j)將串s中從第i個字符開始的連續j個字符刪除,如果i+j>s.len則一直刪除到串尾 § insert(s,s1,i)將串S1插入串S的第i個字符后
上傳時間: 2013-12-11
上傳用戶:奇奇奔奔