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

すべてのタスクをチェックするプログラムは、Pythonで指定されたサーバーコアを使用して実行できるかどうかを確認します


2つのリストがあり、それらはコアとタスクであるとします。 cores [i]は、i番目のサーバーで使用可能なコアの数を示します。また、tasks [i]は、そのタスクを実行するために必要なコアの数を示します。各タスクは、1つのサーバーでのみ実行する必要があります。また、サーバーには複数のタスクを実行する必要がある場合があります。指定されたコアですべてのタスクを実行できるかどうかを確認する必要があります。

したがって、入力がコア=[10、7]タスク=[7、3、2、2、1]の場合、tasks[0]とtasks[1]を最初に配置できるため、出力はTrueになります。コア10を備えたサーバー、およびコア7を備えた2番目のサーバー上の残りのタスク。

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

  • 関数solve()を定義します。これにはコア、タスクが必要です
  • タスクセットが空の場合、
    • Trueを返す
  • 0からコアのサイズまでの範囲のiの場合-1、実行
    • コア[i]>=タスク[0]の場合、
      • コア[i]:=コア[i]-タスク[0]
    • solve(コア、最初のタスクを除くタスクリスト)がtrueの場合、
      • Trueを返す
    • コア[i]:=コア[i]+タスク[0]
  • Falseを返す

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

def solve(cores, tasks):
   if not tasks:
      return True

   for i in range(len(cores)):
      if cores[i] >= tasks[0]:
         cores[i] -= tasks[0]
         if solve(cores, tasks[1:]):
            return True
         cores[i] += tasks[0]
   return False

cores = [10, 7]
tasks = [7, 3, 2, 2, 1]
print(solve(cores, tasks))

入力

[10, 7], [7, 3, 2, 2, 1]

出力

True

  1. 与えられたグラフがPythonで2部グラフであるかどうかをチェックするプログラム

    無向グラフが1つあるとすると、グラフが2部グラフであるかどうかを確認する必要があります。グラフのすべてのエッジ{u、v}がAに1つのノードuを持ち、Bに別のノードvを持つように、グラフのノードを2つのセットAとBに分割できる場合、グラフは2部グラフであることがわかります。 したがって、入力が次のような場合 次に、出力はTrueになり、[0,4]はセットAにあり、[1,2,3]はセットBにあり、すべてのエッジはAからAまたはBからBではなく、AからBまたはBからAになります。 。 これを解決するために、次の手順に従います- 関数dfs()を定義します。これはソースを取ります

  2. 指定された文字列がキーワードであるかどうかを確認するPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −数値が与えられているので、その数値が2の累乗であるかどうかを確認する必要があります。 キーワードは、特定の用途で任意の言語によって予約されている特別な単語であり、識別子として使用することはできません。 指定された文字列がキーワードであるかどうかを確認するために、以下で説明するようにキーワードモジュールを使用しました。 例 # keyword module import keyword # Function def isKeyword(word) :    # list of all