这是《算法设计手册》中的一个问题:
假设你有三个字符串:X,Y和Z,其中|X|=n,|Y|=m,|Z|= n+m。当且仅当Z可以通过以维护每个字符串中的从左到右字符顺序的方式交错X和Y的字符而形成时,称Z为X和Y的交错。请提供一种有效的动态规划算法来确定Z是否为X和Y的交错。
提示:您构造的动态编程矩阵的值应该是布尔值,而不是数值。
这是我尝试过的方法:
最初,我创建了一个1-D字符数组和指向X、Y、Z起始字符的指针。如果Z-pointer匹配X-pointer,则将X存储在字符数组中,否则使用Y-pointer进行检查。如果字符数组中的每个条目与其上一个条目不同,则Z不是交错的。
能否有人帮助我解决这个问题?
假设你有三个字符串:X,Y和Z,其中|X|=n,|Y|=m,|Z|= n+m。当且仅当Z可以通过以维护每个字符串中的从左到右字符顺序的方式交错X和Y的字符而形成时,称Z为X和Y的交错。请提供一种有效的动态规划算法来确定Z是否为X和Y的交错。
提示:您构造的动态编程矩阵的值应该是布尔值,而不是数值。
这是我尝试过的方法:
最初,我创建了一个1-D字符数组和指向X、Y、Z起始字符的指针。如果Z-pointer匹配X-pointer,则将X存储在字符数组中,否则使用Y-pointer进行检查。如果字符数组中的每个条目与其上一个条目不同,则Z不是交错的。
能否有人帮助我解决这个问题?