-
基本的なユークリッドアルゴリズムのためのPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 − 2つの数値が与えられた場合、それら2つの数値のgcdを計算し、それらを表示する必要があります。 2つの数値のGCD最大公約数は、両方を除算できる最大の数値です。ここでは、ユークリッドアプローチに従って、gcdを計算します。つまり、数値を繰り返し除算し、余りがゼロになったときに停止します。 次に、以下の実装のソリューションを見てみましょう- 例 # euclid algorithm for calculation of greatest common divisor def gcd(a, b): &nb
-
バイナリ挿入ソート用のPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −配列が与えられたので、バイナリ挿入ソートの概念を使用して配列をソートする必要があります。 ここでは、名前が示すように、挿入ソートアルゴリズムとともにバイナリ検索の概念を使用します。 次に、以下の実装のソリューションを見てみましょう- 例 # sort def insertion_sort(arr): for i in range(1, len(arr)): temp = arr[i] pos =
-
BogoSortまたは順列ソート用のPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −配列が与えられたので、順列ソートの概念を使用して配列をソートする必要があります。 BogoSortは順列ソートとも呼ばれ、パラダイムの生成とテストに基づいています。 それでは、以下の実装のソリューションを見てみましょう- 例 # random module import random # Sort def bogoSort(a): n = len(a) while (is_sorted(a)== False):
-
カクテルソート用のPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −リストが与えられたので、与えられたリストに対してビットニックソートを実行し、リストを表示する必要があります シェーカーソート −ここでは、ソートはバブルソートのように行われ、反復は両方向で行われます。 アルゴリズム まず、配列が左から右にトラバースされます。トラバーサル中に、隣接するアイテムが比較され、条件に基づいて値が交換されます。これにより、最大数はアレイの最後になります。 これで、配列は反対方向にトラバースされ、条件に基づいて要素が交換されます。これにより、最小数が最初になります。 次に、以下
-
コイン交換のためのPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 − N枚のコインが与えられ、Sに各値が無限に供給されるように、それらのコインを変更したいと考えています。順序に関係なく、変更できる方法がいくつあるかを表示する必要があります。 動的計画法の概念を使用して問題ステートメントを解決し、時間の複雑さを軽減します。 次に、以下の実装のソリューションを見てみましょう- 例 # dynamic approach def count(S, m, n): # base case table = [[0 for x in
-
ソートをカウントするためのPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −配列が与えられたので、カウントソートの概念を使用して配列をソートする必要があります。 ソートのカウントは、特定の範囲のキーを処理する手法です。これには、異なるキーと値を持つオブジェクトの数を数えることが含まれます。最後に、算術計算を行って各オブジェクトの位置を取得し、出力を表示します。 次に、以下の実装のソリューションを見てみましょう- 例 def countSort(arr): # The output character array that will have sorte
-
ロッドを切るためのPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −長さnのロッドと、nよりも小さいサイズのすべてのピースの価格を含む価格の配列が与えられます。ロッドを切り取って販売することで得られる最大の価値を判断する必要があります。 問題を解決するために動的計画法を使用します。 それでは、以下の実装のソリューションを見てみましょう- 例 # A Dynamic Programming solution for Rod cutting problem INT_MIN = -32767 # cut function def cutRod(price, n):  
-
サイクルソート用のPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −配列が与えられたので、サイクルソートの概念を使用して配列をソートする必要があります。 これはインプレースアルゴリズムであり、スワッピングはサイクルの形成によって行われます。 次に、以下の実装のソリューションを見てみましょう- 例 def cycleSort(array): writes = 0 # cycles to be rotated for cycleStart in range(0, len(array) - 1):
-
有向グラフでサイクルを検出するためのPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −有向グラフが与えられたので、グラフにサイクルが含まれているかどうかを確認する必要があります。指定されたグラフに少なくとも1つのサイクルが含まれている場合、出力はtrueである必要があり、そうでない場合はfalseです。 次に、以下の実装のソリューションを見てみましょう- 例 # collections module from collections import defaultdict # class for creation of graphs class Graph(): #
-
卵を落とすパズルのためのPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 − 40階建ての建物のどの階から卵を落とすのが安全で、どれが卵の助けを借りて着陸時に卵を損傷させるのかを知りたいとします。ストーリーを確認するには、最小数のトレイルを表示する必要があります。 次に、以下の実装のソリューションを見てみましょう- 例 # dynamic programming INT_MAX = 32767 # to get minimum trials def eggDrop(n, k): # intialization eggFloor
-
拡張ユークリッドアルゴリズムのためのPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 − 2つの数値が与えられた場合、それら2つの数値のgcdを計算し、それらを表示する必要があります。 2つの数値のGCD最大公約数は、両方を除算できる最大の数値です。ここでは、ユークリッドアプローチに従って、gcdを計算します。つまり、数値を繰り返し除算し、余りがゼロになったときに停止します。ここでは、再帰で取得された以前の値に基づいてアルゴリズムを拡張します。 次に、以下の実装のソリューションを見てみましょう- 例 # extended Euclidean Algorithm def gcdExtende
-
2つのソートされた配列から最も近いペアを見つけるためのPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 − 2つの配列が与えられたので、2つのソートされた配列から最も近いペアを見つける必要があります 次に、以下の実装のソリューションを見てみましょう- 例 # sys module import sys # pair def print_(ar1, ar2, m, n, x): # difference diff=sys.maxsize # index l = 0 r = n-1 &
-
ノームソート用のPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −配列が与えられたので、ノームソートを使用してソートする必要があります。 アルゴリズム 1. Firstly we traverse the array from left to right. 2. Now,if the current element is larger or equal to the previous element then we traverse one step ahead 3. otherwise,if the current element is smaller than the
-
ヒープソート用のPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −配列が与えられたので、ヒープソートの概念を使用して配列を並べ替える必要があります。 ここでは、最大の要素を最後に配置します。これは、配列がソートされるまで繰り返されます。 それでは、以下の実装のソリューションを見てみましょう- 例 # heapify def heapify(arr, n, i): largest = i # largest value l = 2 * i + 1 # left r = 2 * i + 2 #
-
反復マージソート用のPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −配列が与えられたので、反復によるマージソートの概念を使用して配列をソートする必要があります。 ここでは、最大の要素を最後に配置します。これは、配列がソートされるまで繰り返されます。 次に、以下の実装のソリューションを見てみましょう- 例 # iterative way def mergeSort(a): current_size = 1 # traversing subarrays while current_size <
-
反復クイックソート用のPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −配列が与えられたので、反復的な方法を使用したクイックソートの概念を使用して配列をソートする必要があります ここでは、最初に配列をパーティション化し、別のパーティションを並べ替えて、並べ替えられた配列を取得します。 それでは、以下の実装のソリューションを見てみましょう- 例 # iterative way def partition(arr,l,h): i = ( l - 1 ) x = arr[h] for j in rang
-
コインが三角形に配置されているときの最大の高さのためのPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −三角形に配置する必要がある場合、つまり1列目に1枚、2列目に2枚というように、N枚のコインが与えられます。達成可能な最大の高さを表示する必要があります。ヘルプNコインによって。 次に、以下の実装のソリューションを見てみましょう- 例 # squareroot def squareRoot(n): # initial approximation x = n y = 1 e = 0.000001 # all
-
マージソート用のPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −配列が与えられたので、マージソートの概念を使用して配列をソートする必要があります ここでは、最大の要素を最後に配置します。これは、配列がソートされるまで繰り返されます。 次に、以下の実装のソリューションを見てみましょう- 例 #merge function def merge(arr, l, m, r): n1 = m - l + 1 n2 = r- m # create arrays L = [0]
-
最小コストパスのためのPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −コストマトリックスと位置(m、n)が与えられているので、(0、0)から(m、n)に到達するための最小コストパスのコストを見つける必要があります。各セルは、あるセルから別のセルに移動するためのコストを表します。 次に、以下の実装のソリューションを見てみましょう- 例 # dynamic approach R = 3 C = 3 def minCost(cost, m, n): # initialization tc = [[0 for x in range
-
停止ステーション問題の数のためのPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 − AとBの2つの場所の間に13の中間駅があるとされています。連続する駅がないように、2つの中間駅で列車を停止できる方法の数を見つける必要がありますか? 次に、以下の実装のソリューションを見てみましょう- 例 # stop station def stopping_station( p, n): num = 1 dem = 1 s = p # selecting specified position &n