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
*/
相關文章
- 筆記:大話資料結構筆記資料結構
- (資料結構程式碼,總結,自我思考)=> { return 個人學習筆記; } 【To be continued~】資料結構筆記
- 校企合作 | 華南農業大學-綠盟科技網路安全聯合實驗室正式揭牌
- 資料結構學習筆記資料結構筆記
- 資料結構學習筆記1資料結構筆記
- 資料結構學習筆記--棧資料結構筆記
- 王道資料結構第一章個人向筆記資料結構筆記
- 資料結構筆記資料結構筆記
- 資料結構學習筆記-堆排序資料結構筆記排序
- 計算機網路個人筆記計算機網路筆記
- 《Redis設計與實現》筆記 -- 資料結構與物件Redis筆記資料結構物件
- 華南農業大學C語言程式設計課後習題(第六章)C語言程式設計
- 資料結構筆記——概述資料結構筆記
- 資料結構筆記——棧資料結構筆記
- 資料結構——並查集 學習筆記資料結構並查集筆記
- 2.1資料結構學習筆記--佇列資料結構筆記佇列
- 好程式設計師大資料學習筆記:Storm架構程式設計師大資料筆記ORM架構
- 南郵資料結構實驗1.1:順序表的相關操作資料結構
- 【筆記】-《Redis實戰》- 01 Redis資料結構筆記Redis資料結構
- 資料結構實驗(4)資料結構
- 資料結構實驗1資料結構
- C語言_資料結構圖(留個筆記)C語言資料結構筆記
- [學習筆記] Splay & Treap 平衡樹 - 資料結構筆記資料結構
- 資料結構學習筆記-佛洛依德演算法資料結構筆記演算法
- 資料結構筆記——佇列資料結構筆記佇列
- [做題筆記] 資料結構筆記資料結構
- [學習筆記] 動態開點權值線段樹合併 - 資料結構筆記資料結構
- 卡位農業大資料大資料
- 大資料實驗記錄大資料
- 資料結構,雜湊表hash設計實驗資料結構
- CDH5大資料實驗平臺搭建筆記H5大資料筆記
- 資料結構和演算法-學習筆記(一)資料結構演算法筆記
- 資料結構與演算法-學習筆記(二)資料結構演算法筆記
- 資料結構與演算法-學習筆記(16)資料結構演算法筆記
- 資料結構與演算法學習筆記01資料結構演算法筆記
- 資料結構學習筆記-先序遍歷森林資料結構筆記
- 資料結構學習筆記-遞迴求解森林高度資料結構筆記遞迴
- 資料結構 第二章(學習筆記一)資料結構筆記