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

Pythonでスケールといくつかの重みを使用してアイテムを測定できるかどうかを確認します


a ^ 0、a ^ 1、a ^ 2、…、a ^ 100のような重みがあり、ここで「a」は整数であり、その両側に重みを置くことができる体重計もあります。規模。ウェイトWの特定のアイテムがこれらのウェイトを使用して測定できるかどうかを確認する必要があります。

したがって、入力がa =4、W =17の場合、出力はTrueになります。重みはa ^ 0 =1、a ^ 1 =4、a ^ 2 =16であり、16 + 1=17を取得できます。 。

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

  • found:=False
  • 関数util()を定義します。これには、idx、itemWt、weights、Nが必要です
  • 見つかった場合はtrue、
    • 戻る
  • itemWtが0と同じ場合、
    • found:=True
    • 戻る
  • idx> Nの場合、
    • 戻る
  • util(idx + 1、itemWt、weights、N)
  • util(idx + 1、itemWt + weights [idx]、weights、N)
  • util(idx + 1、itemWt --weights [idx]、weights、N)
  • メインの方法から次のようにします-
  • aが2または3の場合、
    • Trueを返す
  • weights:=サイズ100のリストで、0で埋めます
  • total_weights:=0
  • weights [0]:=1、i:=1
  • 次のことを無限に行います。
    • weights [i]:=weights [i-1] * a
    • total_weights:=total_weights + 1
    • ウェイト[i]>10^7
        の場合
      • ループから抜け出す
    • i:=i + 1
  • util(0、W、weights、total_weights)
  • 真であることが判明した場合、
    • Trueを返す
  • Falseを返す

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

found = False
def util(idx, itemWt, weights, N):
   global found
   if found:
      return
   if itemWt == 0:
      found = True
      return
   if idx > N:
      return
   util(idx + 1, itemWt, weights, N)
   util(idx + 1, itemWt + weights[idx], weights, N)
   util(idx + 1, itemWt - weights[idx], weights, N)
def solve(a, W):
   global found
   if a == 2 or a == 3:
      return True
   weights = [0] * 100
   total_weights = 0
   weights[0] = 1
   i = 1
   while True:
      weights[i] = weights[i - 1] * a
      total_weights += 1
      if weights[i] > 10**7:
         break
      i += 1
   util(0, W, weights, total_weights)
   if found:
      return True
   return False
a = 4
W = 17
print(solve(a, W))

入力

4, 17

出力

True

  1. BokehとPythonを使用して垂直棒グラフを視覚化するにはどうすればよいですか?

    Bokehは、データの視覚化に役立つPythonパッケージです。これはオープンソースプロジェクトです。 Bokehは、HTMLとJavaScriptを使用してプロットをレンダリングします。これは、Webベースのダッシュボードでの作業中に役立つことを示しています。 Bokehは、NumPy、Pandas、およびその他のPythonパッケージと組み合わせて簡単に使用できます。インタラクティブなプロットやダッシュボードなどを作成するために使用できます。 BokehはデータソースをJSONファイルに変換します。このファイルは、JavaScriptライブラリであるBokehJSへの入力として使用され

  2. PythonとScrapyを使用したWebスクレイピング?

    クローラーを開発するための最良のフレームワークの1つは、scrapyです。 Scrapyは、高レベルの機能を利用してWebサイトのスクレイピングを容易にする、人気のあるWebスクレイピングおよびクロールフレームワークです。 インストール Windowsにscrapyをインストールするのは簡単です。pipまたはconda(anacondaがある場合)のいずれかを使用できます。 ScrapyはPython2と3の両方のバージョンで動作します。 pip install Scrapy または conda install –c conda-forge scrapy Scrapyが正しく