Python
 Computer >> コンピューター >  >> プログラミング >> Python

各プレフィックスとサフィックスがPythonの場合よりも多くのBを持つように文字を配置できる方法の数を見つけるためのプログラム


n個のAと2n個のBを持つ文字列があるとします。各接頭辞と各接尾辞のBの数がAの数以上になるように可能な配置の数を見つける必要があります

したがって、入力がn =2の場合、2つのAと4つのBがあるため、出力は4になります。したがって、可能な配置は[BBAABB、BABABB、BBABAB、BABBAB]です。

これを解決するには、次の手順に従います-

  • メソッドの解決を定義します。これにはnがかかります
  • nが1と同じ場合、
    • 1を返す
  • nが2と同じ場合、
    • リターン4
  • nが奇数の場合、
    • return find(floor of(n-1)/ 2)^ 2
  • それ以外の場合、
    • return find(floor of n / 2)^ 2

理解を深めるために、次の実装を見てみましょう-

def solve(n):
   if n==1:
      return 1
   if n==2:
      return 4
   if n%2 != 0:
      return solve((n-1)//2)**2
   else:
      return solve(n//2)**2

n = 2
print(solve(n))

入力

2

出力

4

  1. Pythonでお互いを攻撃できないようにn個のルークを配置する方法をいくつか見つけるプログラム

    サイズnxnのチェス盤を表す数nがあるとします。お互いに攻撃できないように、n個のルークを配置できる方法の数を見つける必要があります。ここでは、チェス盤の一部のセルが占有されている場合と、セルが占有されていない場合の2つの方法が異なると見なされます。 (ルークが同じ行または同じ列にある場合、ルークは互いに攻撃する可能性があることを私たちは知っています。) したがって、入力が3のような場合、出力は6になります これを解決するには、次の手順に従います- f=nの階乗 fを返す 理解を深めるために、次の実装を見てみましょう- 例 import math class Solution:

  2. Pythonで連結したときに回文を形成するまでS1の接頭辞とS2の接尾辞が続くようなインデックスiを見つけます

    同じ長さの2つの文字列S1とS2があるとすると、S1[0…i]とS2[i+1…n-1]が与えるようなインデックスiを見つける必要があります。それらが一緒に連結されたときの回文。不可能な場合は、-1を返します。 したがって、入力がS1 =pqrsu、S2 =wxyqpの場合、出力はS1 [0..1] =pq、S2 [2..n-1]=ypqとして1になります。 、次にS1 + S2 = pqyqp は、回文であることを示します。 これを解決するには、次の手順に従います- n:=str1のサイズ str:=空白の文字列 0からnの範囲のiの場合、実行 str:=str c