រាប់គូជាមួយផលបូកដែលបានផ្តល់ឱ្យ  


កម្រិតលំបាក មានភាពងាយស្រួល
សួរញឹកញាប់ គួរឱ្យគោរព ក្រុមហ៊ុន Amazon រោងចក្រ ការដំឡើង
អារេ ហាសហាស។ គណិតវិទ្យា តម្រៀប

ក្នុងបញ្ហា "រាប់គូជាមួយផលបូកដែលបានផ្តល់" យើងបានផ្តល់លេខគត់ អារេ[] និងលេខមួយទៀតនិយាយថាផលបូកអ្នកត្រូវកំណត់ថាតើធាតុណាមួយក្នុងចំណោមធាតុទាំងពីរនៅក្នុងអារេដែលបានផ្តល់មានផលបូកស្មើនឹង“ ផលបូក” ។

ឧទាហរណ៍  

បញ្ចូល:

មកដល់ [] = {១.៣,៤,៦,៧} និងផលបូក = ៩ ។

លទ្ធផល:

ធាតុត្រូវបានរកឃើញ ផលបូក” ដូចដែលមាន“ ៣” និង“ ៦” ដែលមានផលបូកស្មើ ទៅ '៩' ។

បញ្ចូល:

មកដល់ [] = {១.៣,៤,៦,៧} និងផលបូក = ៩ ។

លទ្ធផល:

"ធាតុមិនត្រូវបានរកឃើញជាមួយផលបូកដែលបានផ្តល់ទេ" ព្រោះមិនមានលេខណាដែលស្មើនឹង ៨ លេខ ៨ ទេ។

ក្បួនដោះស្រាយ  

  1. ប្រកាសក សំណុំ.
  2. ខណៈពេលដែល ០ ទៅ 'ខ្ញុំ' គឺតិចជាងប្រវែងនៃអារេ។
    1. កំណត់ j ទៅ sum-arr [i] ។
    2. ពិនិត្យមើលថាតើឈុតមាន 'j' ប្រសិនបើពិតបន្ទាប់មកបោះពុម្ព j និងមកដល់ [ខ្ញុំ] នេះនឹងជាគូ។
    3. ផ្សេងទៀតបន្ថែមការមកដល់ [ខ្ញុំ] ទៅក្នុងសំណុំ។

ការពន្យល់  

យើងបានផ្តល់សេចក្តីថ្លែងការណ៍អំពីបញ្ហាដែលក្នុងនោះយើងត្រូវបានផ្តល់ជាមួយចំនួនគត់និងចំនួនមួយនិយាយថា 'ផលបូក' ។ ភារកិច្ចរបស់យើងគឺដើម្បីកំណត់ថាតើអារេមួយមានធាតុណាមួយក្នុងចំណោមធាតុទាំងពីរដែលមានចំនួនបូកស្មើនឹងផលបូកដែលបានផ្តល់។

គំនិតចម្បងរបស់យើងគឺប្រើហាស់សេតនិងរកគូ។ សម្រាប់អ្វីដែលយើងនឹងរក្សាទុកភាពខុសគ្នានៃផលបូកនិងតម្លៃនៃអារេនីមួយៗនៅពេលឆ្លងកាត់ពីព្រោះគូមួយមានធាតុទាំងពីរនោះហើយផលបូកដែលបានផ្តល់គឺជាគន្លឹះក្នុងការស្វែងរកធាតុមួយទៀតដូច្នេះហើយទើបយើងរក្សាទុកធាតុអារេទាំងអស់ទៅក្នុងសំណុំ ហើយមើលទៅវាប្រសិនបើធាតុមួយនៃធាតុនៅក្នុងគូមានវត្តមានឬមិន។

សូម​មើល​ផង​ដែរ
តម្រៀបគ្រវី

ដើម្បីរកឱ្យឃើញយើងនឹងប្រើវិធីសាស្រ្តធ្វើឱ្យសៅហ្មង។

តោះយើងយកឧទាហរណ៍៖

មកដល់ [] = {១, ៤, ៤៥, ៦, ១០, ៨};

  • i = 0, myset, sum = 16;

j = sum-arr [i];

នោះគឺជ = ១៦-១ = ១៥ ហើយច្បាស់ណាស់ 'ជ' នឹងមិនមាននៅក្នុងផែនទីទេ។

ដូច្នេះវាបន្ថែមការមកដល់ [ខ្ញុំ] ដែលជាលេខ ១ ចូលក្នុងផ្នត់គំនិតរបស់ខ្ញុំ។

  • i = 1, myset = {1}, sum = 16;

j = sum-arr [i];

នោះគឺ j = ១៦-៤ = ១២ ហើយច្បាស់ណាស់ 'ជ' មិនមាននៅក្នុងផែនទីទេ។

ដូច្នេះវាបន្ថែមការមកដល់ [ខ្ញុំ] ដែលជាលេខ ១ ចូលក្នុងផ្នត់គំនិតរបស់ខ្ញុំ។

  • i = 2, myset = {1, 4}, ផលបូក = 16;

j = sum-arr [i];

នោះគឺច = ១៦-៤៥ = -២៩ ហើយច្បាស់ណាស់“ ជ” នឹងមិនមាននៅក្នុងផែនទីទេ។

ដូច្នេះវាបន្ថែមការមកដល់ [ខ្ញុំ] ដែលជាលេខ ១ ចូលក្នុងផ្នត់គំនិតរបស់ខ្ញុំ។

  • i = 3, myset = {1, 4, 45}, ផលបូក = 16;

j = sum-arr [i];

នោះគឺ j = 16-6 = 10 និង j មិនមាននៅក្នុងផែនទីទេ។

ដូច្នេះវាបន្ថែមការមកដល់ [ខ្ញុំ] ដែលជាលេខ ១ ចូលក្នុងផ្នត់គំនិតរបស់ខ្ញុំ។

  • i = 4, myset = {១, ៤, ៤៥, ៦}, បូក = ១៦;

j = sum-arr [i];

នោះគឺ j = ១៦-១០ = ៦ និង j មានវត្តមាននៅក្នុងផែនទី។

នេះគឺជាកន្លែងដែលយើងរកឃើញធាតុមួយផ្សេងទៀតនៃគូ។ យើងបានធ្វើប្រតិបត្តិការរួចហើយនៅថ្ងៃទី ១៦ និង ១០ ។

ហើយយើងបោះពុម្ព៖

“ រកឃើញធាតុដែលមានផលបូកដែលបានផ្តល់គឺ ១៦, គឺ (១០, ៦);

នោះមានន័យថាធាតុពីរនៃធាតុមានវត្តមាននៅក្នុងអារេដែលមានផលបូកស្មើនឹង“ ផលបូក” ។

ការអនុវត្តន៍  

កម្មវិធី C ++ សម្រាប់ការរាប់គូជាមួយនឹងការផ្តល់ជូន

#include <bits/stdc++.h>
using namespace std;

void getPairOfSum(int arr[], int arr_size, int sum)
{
    unordered_set<int> myset;
    for (int i = 0; i < arr_size; i++)
    {
        int j = sum - arr[i];
        if (myset.find(j) != myset.end())
        {
            cout << "Found elements with the given sum as "<<sum << " is (" << arr[i] <<", " << j << ")"<<endl;
        }
        myset.insert(arr[i]);
    }
}
int main()
{
    int arr[] = { 1, 4, 45, 6, 10, 8 };
    int sum = 16;
    int arr_size = sizeof(arr) / sizeof(arr[0]);
    getPairOfSum(arr, arr_size, sum);
    return 0;
}
Found elements with the given sum as 16 is (10, 6)

កម្មវិធីចាវ៉ាសម្រាប់ការរាប់គូជាមួយដុនស៊ន

import java.io.*;
import java.util.HashSet;

class twoElementSum {
  public static void getPairOfSum(int arr[], int sum) {
    HashSet<Integer> myset = new HashSet<Integer> ();
    for (int i = 0; i<arr.length; ++i) {
      int j = sum - arr[i];
      if (myset.contains(j)) {
        System.out.println("Found elements with the given sum as " + sum + " is (" + arr[i] + ", " + j + ")");
      }
      myset.add(arr[i]);
    }
  }
  public static void main(String[] args) {
    int arr[] = { 1, 4, 45, 6, 10, 8 };
    int sum = 16;
    getPairOfSum(arr, sum);
  }
}
Found elements with the given sum as 16 is (10, 6)

ការវិភាគភាពស្មុគស្មាញសម្រាប់គូរាប់ជាមួយផលបូកដែលបានផ្តល់ឱ្យ  

ស្មុគស្មាញពេលវេលា

អូរ (n) ដូចជាអារេទាំងមូលត្រូវការអោយឆ្លងកាត់តែមួយដង។

សូម​មើល​ផង​ដែរ
ចែកចាយនំដល់ប្រជាជនឡេឡេលេខកូដដំណោះស្រាយ

ភាពស្មុគស្មាញនៃលំហ

អូរ (n) ដូចផែនទីហាសត្រូវបានប្រើដើម្បីផ្ទុកធាតុអារេ។

ឯកសារយោង