1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <bits/stdc++.h>
#define MAXN 105
using namespace std;

int main()
{
char str1[MAXN], str2[MAXN];
int dp[MAXN][MAXN];
int path[MAXN][MAXN];

puts("Please input the first string:");
gets(str1);
puts("Please input the second string:");
gets(str2);
int len1 = strlen(str1), len2 = strlen(str2);

memset(dp, 0, sizeof(dp));
for(int i=0; i<len1; i++)
for(int j = 0; j<len2; j++)
{
if(str1[i] == str2[j])
{
dp[i+1][j+1] = dp[i][j] + 1;
path[i+1][j+1] = 1;
}
else
{
dp[i+1][j+1] = max(dp[i+1][j], dp[i][j+1]);
path[i+1][j+1] = dp[i+1][j] > dp[i][j+1] ? 2 : 3;
}
}

int ans = dp[len1][len2];
printf("The length of LCS is %d\n", ans);
int cnt = ans-1;
char LCS[MAXN];
int i=len1, j=len2;
while(i>0 && j>0)
{
if(path[i][j] == 1)
{
LCS[cnt--] = str1[i-1];
i--, j--;
}
else if(path[i][j] == 2)
j--;
else
i--;
}
puts(LCS);
}

&emsp;&emsp; 可以说,这是自己第一次写程序来保存路径,之前自己总觉得在数组中保存路径是保存确定的位置,经过编码自己了解,其实是要保存转移的方向,再根据方向来回溯。

&emsp;&emsp; 编程真的要细心呀,这个程序自己在程序课上敲码 5 分钟,Debug 两节课。原因竟是 else if(path[i][j] == 2) 中的 == 写错,少打了一个等号,弱智错误呀,调试了两节课才找到。不过找到的时候蛮玄学的,是自己用常用的#ifdef DEBUG 大法时,再判等时想起应该是两个等号, 忽地一想,自己不会是之前判等写错了吧,眼光向下一移,果然…. 解决。事迹已加入脑残系列,可以与上次离散实验中的 if(ischuandi()); 相并列了。

浮生若梦,为欢几何。
  • 准备中午去吃,龚逸舟说老崔,你中午是不是去吃香锅,balabala,吃的时候带上我,你是不是要吃 50 的,分我点呗。我没说话,老龚说老崔不理我一看就是不愿意(当然是开玩笑的那种语气),我冷漠地说了一句在和小姐姐聊天,他说我重要还是小姐姐重要,我说当然是小姐姐重要,他说放屁,当然是我重要。我默默说了一句:“你重。”

    2018-4-29

    阅读全文 »

如果明天没课该多好,这样五一就有五天假了。
崔明浩

&emsp;&emsp; 每个人都要为自己的冲动付出代价,这句话是没错的。就像今天早上醒来时,突发奇想说想要搭个博客,便再忍不住心性,想要立刻完成。博客这种东西之前还要有想搞过的,最初是去年吧,在 CSDN 上开通过一个,打算记录下算法呀学习呀什么的,不过嘛,草草没了下文,开通那一天后再也没更新过,甚至几乎没进过自己的博客。今天搭博客呢,想着自己能不信赖于像 CSDN 这种网站博客的固定样式,把博客做出自己喜欢的样式。(不只是博客,好像很多事情自己都不愿执拗于别人已有的固定的,想做出自己喜欢的样子,哈哈哈)这带来的后果呢,就是自己动手要多一些,不过嘛,自己醒来想搭博客也是想今天一天要做什么的结果。

阅读全文 »

程序员的第一篇博客文章,当然是 Hello, world! 啦~

1
2
3
4
5
6
7
#include <stdio.h>

int main()
{
printf("Hello, world!");
return 0;
}
0%