幾道資料結構的演算法題

2021-04-13 08:53:15 字數 2335 閱讀 9971

一問題: 給定一組字串,要求求出乙個最短的字串使得它包含所有給出的字串。

比如"a","bc","ca".輸出應該是"bca"。

2、按照陣列len的記錄長度,在剩下的字串中找出記錄長度最長的 字串,

a. 如果這個字串包含在string中,該字串已被包含,轉2;

b. 如果這個字串的長度是1,將該字串與string連線, 該字串已被包含,轉2;

c. 如果這個字串的長度與它在陣列len的記錄長度相等, 將它在陣列len的記錄長度減1,轉2;

d. 如果這個字串的長度與它在陣列len的記錄長度length不相等, 分別取該字串的左右length個字元子串,如果子串包含在 string中,將剩下的字元連線到string中, 該字串被包含,轉2;否則將它在陣列len的記錄長度減1,轉2。

#define stringnum 100

#define maxlength 100

struct node

;int isinstring(char *str,char *s);

int maxlen(struct node len,int s,int n);

void swap(struct node *t1,struct node *t2);

void leftstr(char *s,char *d,int n);

void rightstr(char *s,char *d,int n);

int simplykmp(const char* src, const char* token);

int findmaxlen(char* str, int num, bool bfind);

void findminstr(char* str, int num, char* res);

void main(void)

i=0;

max=maxlen(len,i,num);

swap(&len[i],&len[max]);

strcpy(string,str[len[i].index]);

len[i].index=-1;

i++;

while(i/* 尋找字串陣列中長度最大的字串的位置 */

int maxlen(struct node len,int s,int n)

/* 交換陣列元素 */

void swap(struct node *t1,struct node *t2)

/* 取字串s的左邊n個字串存放到d中 */

void leftstr(char *s,char *d,int n)

/* 取字串s的右邊n個字串存放到d中 */

void rightstr(char *s,char *d,int n)

/* 如果字串s是字串str的子串,返回1;否則,返回0 */

int isinstring(char *str,char *s)

;bool* bflag = new bool[num];

for (int index = 0; index < num; index++)

bflag[index] = false;

int maxlen = findmaxlen(str, num, bflag);

bflag[maxlen] = true;

strcpy(temp, str[maxlen]);

index = 0;

while(index < num)

if (strlen(str[maxlen]) == 1)}}

int findmaxlen(char* str, int num, bool bfind)

return maxlen;

}int simplykmp(const char* src, const char* token)

else

}if (j >= strlen(token))

return i - strlen(token);

return -1;

}二求陣列中最長的單調遞增子串行

void showres(int* a, int* pmax, int maxd, int k)

else

}void findmaxincsquence(int* a, int n)

if (nmax < max[i])

}showres(a, max, nmax, k);

}node* reverse(node* pheade)

}return pheade;

}struct btree

;btree* creaatetree(char* ppre, char* pinner, int nlen)

資料結構幾道程式設計題

先將其中乙個鍊錶的鏈頭按到另乙個鍊錶的尾部,如果他們有交集則會構成乙個環,題目等價於找鍊錶中的環的起始結點。找到後將鍊錶還原。一.兩個長鍊表求交點 考慮環 public listnode getintersectionnode listnode heada,listnode headb listno...

幾道資料結構和演算法題的回顧總結

這週做了一些牛客網上劍指offer的題.選取幾道個人覺得比較典型,有意思的題拿出來進行分析.1.鍊錶中環的入口節點 乙個鍊錶中包含乙個環,請找出這個環的入口節點.分析 一般答案不那麼顯然的鍊錶題,大多都可以用這種方法解決 派出兩個指標幹活.這道題也是如此,具體是派出快慢2個指標同時出發,快指標一次走...

幾道演算法題

1 n階乘之和 public class test1 sum kk system.out.println sum 2.獲取二維陣列每列最小的值 public class test2 system.out.println sum public long jiecheng int x return su...