8591 計算next值 SCAU 華南農業大學 資料結構實驗(個人筆記 勿噴)
//預備知識:https://www.bilibili.com/video/BV1NJ411k7qw?from=search&seid=7718061884170427148
//預備知識:https://www.bilibili.com/video/BV1uJ411s7br/?spm_id_from=333.788.videocard.0 可以不看
//程式碼分析視訊:https://www.bilibili.com/video/BV1T4411P7AG?from=search&seid=15200189655283235603
//Description 編寫演算法,錄入多個字串計算並驗證NEXT值,輸入0結束。本題目給出部分程式碼,請補全內容。]
#include <stdio.h>
#include "stdlib.h"
#define MAXSTRLEN 255 // 使用者可在255以內定義最大串長
typedef unsigned char SString[MAXSTRLEN + 1]; // 0號單元存放串的長度
//將sstring定義成一個型別,這個型別為一個unsigned char型別的陣列,陣列的長度為MAXSTRLEN+1
void get_next(SString T, int next[])
{
// 演算法4.7
// 求模式串T的next函式值並存入陣列next
// 請補全程式碼
int i; //i是字尾
int j; //j是字首
i = 1; //字尾初始化
j = 0; //字首初始
next[1] = 0;
while (i < T[0]) //字首只要小於字串長度就可以繼續判斷
{
if (T[j] == T[i] || j == 0) //這裡不可以鞋 i==0,因為到後面j有可能會回溯,要用j做判斷條件,如果用i會卡死
{
i++; //字尾後移一個
j++; //字首也後移一個
next[i] = j; //匹配成功就可以填next值陣列
}
else
{
j = next[j]; //匹配失敗,j字首回溯到上一次匹配成功的第一個位置,
}
}
}
int main()
{
int next[MAXSTRLEN]; //接收next值
SString S; // 等價於char S[MAXSTRLEN + 1]
int n, i, j;
char ch;
scanf("%d", &n); // 指定要驗證NEXT值的字串個數
ch = getchar(); //接收換行符
for (i = 1; i <= n; i++)
{
ch = getchar();
for (j = 1; j <= MAXSTRLEN && (ch != '\n'); j++) // 錄入字串 ,j是從1開始的
{
S[j] = ch;
ch = getchar();
}
S[0] = j - 1; // S[0]用於儲存字串中字元個數
get_next(S, next);
printf("NEXT J is:");
for (j = 1; j <= S[0]; j++)
printf("%d", next[j]);
printf("\n");
}
}
/*
輸入格式
第一行:輸入n,表示有n個需計算NEXT值的字串
第二至n+1行:每行輸入一個字串
輸出格式
第1至第n行:通過計算每相應行的字串得出的NEXT值
輸入樣例
4
abcdefg
aaaaab
abaabcac
aaabaaab
輸出樣例
NEXT J is:0111111
NEXT J is:012345
NEXT J is:01122312
NEXT J is:01231234
*/
相關文章
- 校企合作 | 華南農業大學-綠盟科技網路安全聯合實驗室正式揭牌
- 華南農業大學C語言程式設計課後習題(第六章)C語言程式設計
- 資料結構筆記資料結構筆記
- 王道資料結構第一章個人向筆記資料結構筆記
- 《Redis設計與實現》筆記 -- 資料結構與物件Redis筆記資料結構物件
- 計算機網路個人筆記計算機網路筆記
- 資料結構筆記——概述資料結構筆記
- 資料結構筆記——棧資料結構筆記
- 【筆記】-《Redis實戰》- 01 Redis資料結構筆記Redis資料結構
- 資料結構實驗(4)資料結構
- 資料結構實驗1資料結構
- (資料結構程式碼,總結,自我思考)=> { return 個人學習筆記; } 【To be continued~】資料結構筆記
- 筆記:大話資料結構筆記資料結構
- 資料結構筆記——佇列資料結構筆記佇列
- 資料結構學習筆記資料結構筆記
- [做題筆記] 資料結構筆記資料結構
- 資料結構,雜湊表hash設計實驗資料結構
- 亞信安全守護華南農業大學雲資料中心建智慧校園縱深防禦體系
- 大資料計算:結構化大資料計算的理想模式大資料模式
- 大資料個人筆記(一)大資料筆記
- 資料結構學習筆記--棧資料結構筆記
- 資料結構學習筆記1資料結構筆記
- 線性表__資料結構筆記資料結構筆記
- 資料結構筆記——演算法資料結構筆記演算法
- 筆記-資料結構之 Hash(OC的粗略實現)筆記資料結構
- 江蘇科技大學大二《資料結構》課內實驗報告模板答案資料結構
- 資料結構實驗課五-1資料結構
- 資料結構實驗三:線性表綜合實驗資料結構
- 菜鳥筆記之資料結構(24)筆記資料結構
- 資料結構筆記-棧的應用資料結構筆記
- 資料結構筆記——線性表(中)資料結構筆記
- 資料結構筆記——線性表(下)資料結構筆記
- 資料結構學習筆記(一) (轉)資料結構筆記
- 資料結構學習筆記-堆排序資料結構筆記排序
- 【資料結構】30、hashmap=》hash 計算方式資料結構HashMap
- 資料庫課程作業筆記 - 驗收資料庫筆記
- 資料結構實驗:連結串列的應用資料結構
- 《計算機體系結構:量化研究方法》讀書筆記計算機筆記