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

从三个链表中查找一个三元组,其总和等于C ++中的给定数字

东方俊材
2023-03-14
本文向大家介绍从三个链表中查找一个三元组,其总和等于C ++中的给定数字,包括了从三个链表中查找一个三元组,其总和等于C ++中的给定数字的使用技巧和注意事项,需要的朋友参考一下

在本教程中,我们将编写一个程序,该程序在链表中查找三元组,其总和等于给定的数字。

让我们看看解决问题的步骤。

  • 为链表创建一个struct节点。

  • 用伪数据创建链接列表。

  • 为三个元素编写三个内部循环,这些循环将迭代直到链接列表的末尾。

    • list-style-type: square;">
    • 添加三个元素。

    • 将总和与给定数字进行比较。

    • 如果两者相等,则打印元素并中断循环。

示例

让我们看一下代码。

#include <bits/stdc++.h>
using namespace std;
class Node {
   public:
   int data;
   Node* next;
};
void insertNewNode(Node** head_ref, int new_data) {
   Node* new_node = new Node();
   new_node->data = new_data;
   new_node->next = (*head_ref);
   *head_ref = new_node;
}
void findTriplet(Node *head_one, Node *head_two, Node *head_three, int givenNumber) {
   bool is_triplet_found = false;
   Node *a = head_one;
   while (a != NULL) {
      Node *b = head_two;
      while (b != NULL) {
         Node *c = head_three;
         while (c != NULL) {
            int sum = a->data + b->data + c->data;
            if (sum == givenNumber) {
               cout << a->data << " " << b->data << " " << c->data << endl;
               is_triplet_found = true;
               break;
            }
            c = c->next;
         }
         if (is_triplet_found) {
            break;
         }
         b = b->next;
      }
      if (is_triplet_found) {
         break;
      }
      a = a->next;
   }
   if (!is_triplet_found) {
      cout << "No triplet found" << endl;
   }
}
int main() {
   Node* head_one = NULL;
   Node* head_two = NULL;
   Node* head_three = NULL;
   insertNewNode (&head_one, 4);
   insertNewNode (&head_one, 3);
   insertNewNode (&head_one, 2);
   insertNewNode (&head_one, 1);
   insertNewNode (&head_two, 4);
   insertNewNode (&head_two, 3);
   insertNewNode (&head_two, 2);
   insertNewNode (&head_two, 1);
   insertNewNode (&head_three, 1);
   insertNewNode (&head_three, 2);
   insertNewNode (&head_three, 3);
   insertNewNode (&head_three, 4);
   findTriplet(head_one, head_two, head_three, 9);
   findTriplet(head_one, head_two, head_three, 100);
   return 0;
}
输出结果

如果运行上面的代码,则将得到以下结果。

1 4 4
No triplet found

结论

 类似资料:
  • 本文向大家介绍在C ++中从给定的三个排序数组中查找三个最接近的元素,包括了在C ++中从给定的三个排序数组中查找三个最接近的元素的使用技巧和注意事项,需要的朋友参考一下 假设我们有三个排序的数组A,B和C,以及分别来自A,B和C的三个元素i,j和k,使得max(| A [i] – B [i] |,| B [j] – C [k] |,| C [k] – A [i] |)被最小化。因此,如果A =

  • 问题内容: 给定一个数组,我们需要找到总和等于数字 X 的所有对。 例如: 问题答案: 解决方案1: 您可以检查每一对数字,并找到总和等于 X。 Java 代码: 解决方案2: 对数组进行排序 * 我们将维护两个索引,一个在开头(l=0),一个在结尾(r=n-1) * 迭代直到 l < r * 检查 arr[l] + arr[r] 是否等于 X * 如果是,则打印该对并执行 l , r– * 如果

  • 在Javascript中,还有其他有效的方法来实现此任务吗? 我尝试的身份是: 这里输出:

  • 本文向大家介绍C ++中具有3个数组元素的特殊三元组的总和,包括了C ++中具有3个数组元素的特殊三元组的总和的使用技巧和注意事项,需要的朋友参考一下 在此问题中,给定3个数组X,Y,Z。我们的任务是创建一个程序,以查找包含3个数组中的元素的特殊三元组的和。 特殊三元组是具有以下属性的特殊三元组类型- 对于(a,b,c):a≤b且b≥c ,即三元组的中间元素应比其他两个元素要好。 并且,三元组的值

  • 问题陈述 任务是检查在长度为N的数组中是否存在K个元素的非连续子数组,其总和等于给定的总和。 例如, 长度为 3 且 sum=7 的非连续子数组为 [1,2,4]。 限制条件: 输出 如果存在 sum=TargetSum 的子数组,我们必须返回 True,如果不可能,则必须返回 False。

  • 问题内容: 我正在尝试一次从三个表中检索数据。这些表如下所示: 类别 讯息 评论 我想要得到的是1条消息(因为我有一个基于id的子句),3个类别(因为有3个类别链接到消息)和2条注释(因为有2条注释链接到消息)。 我正在尝试使用以下查询来检索数据: 但是,当运行此查询时,我得到6个结果: 在我预期结果如下的地方: 只有三行,我应该能够获取所有需要的数据。这有可能吗?我做错了吗?? 问题答案: 如评