当前位置: 首页 > 编程笔记 >

在C ++中以矩阵形式打印从左上到右下的所有回文路径

彭开畅
2023-03-14
本文向大家介绍在C ++中以矩阵形式打印从左上到右下的所有回文路径,包括了在C ++中以矩阵形式打印从左上到右下的所有回文路径的使用技巧和注意事项,需要的朋友参考一下

在这个问题中,我们给了一个包含词首字母的混合词(仅小写字母),并且必须在给定矩阵中从矩阵的左上角到右下角打印所有古罗马式的路径。

在此问题上允许的动作是正确的。不允许对角移动。

让我们以一个例子来理解这个问题:

Input: matrix[][] ={
   {"xxxy",
   "yxxx",
   "xyyx"}Output: xxxxxx , xxxxxx , xyxxyx

讲解

让我们使用位置wrt到i位置查看从左上到右下的所有有效移动。

i00 -> i01 -> i02 -> i03 -> i13 -> i23 = xxxyxx
i00 -> i01 -> i11 -> i12 -> i13 -> i23 = xxxxxx
.
.
.
i00 -> i10 -> i20 -> i21 -> i22 -> i23 = xyxyyx

在所有可能的结果中,我们仅需要回文路径即可:

i00 -> i01 -> i11 -> i12 -> i13 -> i23 = xxxxxx
i00 -> i01 -> i02 -> i12 -> i13 -> i23 = xxxxxx
i00 -> i10 -> i11 -> i12 -> i22 -> i23 = xyxxyx

在解释本身中,我们奠定了解决问题的基础。我们将找到从左上角到右下角的所有路径,并打印所有可得出回文路径的路径。

下面的示例将说明解决方案:

示例

#include<iostream>
using namespace std;
#define N 4
int printPalindrome(string str){
   int len = str.length() / 2;
   for (int i = 0; i < len; i++) {
      if (str[i] != str[str.length() - i - 1])
      return 0;
   }
   cout<<str<<endl;
}
void findPath(string str, char a[][N], int i, int j, int m, int n) {
   if (j < m - 1 || i < n - 1) {
      if (i < n - 1)
      findPath(str + a[i][j], a, i + 1, j, m, n);
      if (j < m - 1)
      findPath(str + a[i][j], a, i, j + 1, m, n);
   } else {
      str = str + a[n - 1][m - 1];
      printPalindrome(str) ;
   }
}
int main() {
   char matrix[][N] = {
      { 'x', 'y', 'x', 'y' },
      { 'y', 'x', 'x', 'y' },
      { 'y', 'x', 'y', 'x' }
   };
   string str = "";
   cout<<"Palimdromic path are : ";
   findPath(str, matrix, 0, 0, 4, 3);
   return 0;
}

输出结果

Palimdromic path are : xyxxyx
xyxxyx
xyxxyx
xyxxyx
xyxxyx
xyxxyx
xyxxyx
xyxxyx
 类似资料:
  • 本文向大家介绍C语言实现矩阵翻转(上下翻转、左右翻转),包括了C语言实现矩阵翻转(上下翻转、左右翻转)的使用技巧和注意事项,需要的朋友参考一下 C语言实现矩阵翻转 上下翻转与左右翻转 实例代码:  动态分配内存 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

  • 问题内容: 如何以矩阵框格式打印出简单的int [] [],就像我们在其中手写矩阵的格式那样。简单的循环运行显然无效。如果有帮助,我正在尝试在linux ssh终端中编译此代码。 问题答案: 产生:

  • 我不知道该如何解决这个问题。我得到了一个有12个节点A-L的图。17个边缘连接它们。我被告知要找到从A到L的所有路径。我可以遍历一个节点多次,但只能遍历一次边。输出应该打印每个路径和路径总数。 例如,如果只有1个路径。输出应为: 我想一个递归的深度优先搜索函数应该可以解决这个问题,但我就是想不出一个打印每一条路径的方法。例如,如果我的函数找到一个路径ABDL并到达结尾L,它将打印ABDL。然后它回

  • 我创造了一个长方形 它具有敌人的坐标和尺寸。在渲染方法中,我希望当按下此矩形时,打印字符串“完成”。我尝试了: 但它在地图上的任何地方都有效,而不仅仅是矩形

  • 问题内容: 我试图使用Java在二叉树中打印所有根到叶的路径。 在主要方法中: 但是它给出了错误的输出。 给定的树: 预期产量: [5,1,3] [5、8、6] [5、8、9] 但是输出产生了: [5,1,3] [5、1、3、8、6] [5、1、3、8、6、9] 可以找出一个… 问题答案: 用以下方法调用递归方法: 传递时会发生什么(而不是在所有方法调用中使用单个对象,这意味着,当您返回原始调用者

  • 本文向大家介绍螺旋打印矩阵,包括了螺旋打印矩阵的使用技巧和注意事项,需要的朋友参考一下 该算法用于以螺旋方式打印数组元素。首先,从第一行开始,先打印全部内容,然后按照最后一列打印,然后再最后一行,依此类推,从而以螺旋方式打印元素。  该算法的时间复杂度为O(MN),M为行数,N为列数。 输入输出 算法 输入: 矩阵矩阵,行和列m和n。 输出:以螺旋方式打印矩阵的元素。 示例 输出结果

  • 这是一个面试问题。 我们希望按it级别打印二叉树,但有一些变化: 在偶数级别,打印将从左到右。 在奇数级别,打印将从右到左。 我试着使用这里的代码(正常的级别顺序遍历,方法2)只做了一些保持级别的更改(用于知道是从左到右打印还是从右到左打印),当然还添加了相关的条件,以便在正确的方向上打印。 不幸的是,我下面的代码在不小的树上不能很好地工作--我有一个问题,就是理解如何在循环中以正确的顺序存储节点

  • 问题内容: 是否有更改此文本的CSS代码 到这个 问题答案: 尝试这个 编辑:将此类应用于段落标记,您应该得到想要的结果。