Blue Bridge Cup Daily One Question 1.8 Compétition provinciale 2017 Groupe A 6. La plus grande sous-chaîne commune [DP]

Description du titre

  2017 Blue Bridge Cup Software Compétition provinciale C ++ University Group A, Question 6 "The Largest Common Substring ".
  80% d'une question à remplir avec un code est également une sous-question.
  Parce que ce n'est pas difficile, Maître Luo le fera à nouveau.


Le problème de la longueur maximale de sous-chaîne commune est le suivant: quelle
est la longueur maximale qui peut être mise en correspondance entre toutes les sous-chaînes de deux chaînes.

Par exemple: "abcdkkk" et "baabcdadabc",
la sous - chaîne commune la plus longue qui peut être trouvée est "abcd", donc la longueur maximale de sous-chaîne commune est de 4.

Le programme suivant est résolu par la méthode de la matrice, qui est une solution relativement efficace dans le cas où la taille de la chaîne n'est pas grande.

Veuillez analyser l'idée de la solution et remplir le code manquant dans la partie soulignée.

#include <stdio.h>
#include <string.h>

#define N 256
int f(const char* s1, const char* s2)
{
	int a[N][N];
	int len1 = strlen(s1);
	int len2 = strlen(s2);
	int i,j;
	
	memset(a,0,sizeof(int)*N*N);
	int max = 0;
	for(i=1; i<=len1; i++){
		for(j=1; j<=len2; j++){
			if(s1[i-1]==s2[j-1]) {
				a[i][j] = __________________________;  //填空
				if(a[i][j] > max) max = a[i][j];
			}
		}
	}
	
	return max;
}

int main()
{
	printf("%d\n", f("abcdkkk", "baabcdadabc"));
	return 0;
}

Remarque: ne soumettez que les codes manquants, ne soumettez pas les codes et symboles existants. Ne soumettez pas de texte explicatif.

https://blog.csdn.net/weixin_43914593/article/details/112336419

Avec ce problème, TAT, qui sera fait aussi, j'en ai parlé dans la classe algorithme, c'est très simple

	a[i][j] = a[i-1][j-1] + 1;

 

Je suppose que tu aimes

Origine blog.csdn.net/qq_43660826/article/details/112983854
conseillé
Classement