⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fangfa1.cpp

📁 huffman编码 希望对大家有用
💻 CPP
字号:
 #include <stdio.h>
#include <string.h>
#define MAXLEN 200
void LCSLength(char *x, char *y, int m, int n, int c[MAXLEN][MAXLEN], int b[MAXLEN][MAXLEN])
{
    int i, j;
    for(i = 0; i <= m; i++)
        c[i][0] = 0;
    for(j = 0; j <= n; j++)
        c[0][j] = 0;
    for(i = 1; i<= m; i++)
    {
        for(j = 1; j <= n; j++)
        {
            if(x[i-1] == y[j-1])
            {
                c[i][j] = c[i-1][j-1] + 1;
                b[i][j] = 0;
            }
            else if(c[i-1][j] >= c[i][j-1])
            {
                c[i][j] = c[i-1][j];
                b[i][j] = 1;
            }
            else
            {
                c[i][j] = c[i][j-1];
                b[i][j] = 2;
            }
        }
    }
}

void PrintLCS(int b[MAXLEN][MAXLEN], char *x, int i, int j)
{
    if(i == 0 || j == 0)
        return;
    if(b[i][j] == 0)
    {
        PrintLCS(b, x, i-1, j-1);
        printf("%c", x[i-1]);
    }
    else if(b[i][j] == 1)
        PrintLCS(b, x, i-1, j);
    else
        PrintLCS(b, x, i, j-1);
}

void main()
{
	int m,n;
	char x[MAXLEN],y[MAXLEN];
	int b[MAXLEN][MAXLEN];
    int c[MAXLEN][MAXLEN];
	printf("请输入m并输入x字符串:\n");
	scanf("%d\n",&m);
	gets(x);
	/*for(int i=0;i<m;i++)
	{
		x[i]=getchar();
	}*/
	printf("请输入n并输入y字符串:\n");
	scanf("%d\n",&n);
	for(int j=0;j<n;j++)
	{
       y[j]=getchar();
	}
	printf("m=%d,n=%d\n",m,n);
    printf("最长公共子序列是:\n");
    LCSLength(x, y, m, n, c, b);
	int length=c[m][n];
    PrintLCS(b, x, m, n);
	printf("\n");
	printf("最长公共子序列的长度是:\n");
	printf("%d",length);
	printf("\n");
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -