C++のSquareへのマッチ棒
小さなマッチガールがいるとしましょう。そして、私たちは小さなマッチガールが持っているマッチ棒を正確に知っています。それらのマッチ棒をすべて使い切って1つの正方形を作る方法を見つけなければなりません。スティックを壊してはいけませんが、それらをリンクすることはできます。各マッチスティックは1回だけ使用する必要があります。入力は、女の子が持っているいくつかのマッチ棒で、棒の長さで表されます。マッチガールが持っているすべてのマッチ棒を使用して1つの正方形を作成できるかどうかを表すために、出力はtrueまたはfalseのいずれかになります。したがって、入力が[1,1,2,2,2]のような場合、答えは真になります。長さ2の正方形を作成できるため、片側に長さ1のスティックが2本あります。
これを解決するには、次の手順に従います-
- solve()と呼ばれる再帰メソッドを定義します。これは、インデックス、合計配列、ターゲット、およびnums配列を取ります。したがって、これは次のように機能します-
- index> =nums sizeの場合、
- sums [0]、sum [1]、sum[2]がすべてtargerと同じ場合はtrueを返します
- 0から3の範囲のiの場合-
- sums [i] + nums [index]>ターゲットの場合、ループの次の部分をスキップします
- sums [i]:=sums [i] + nums [index]
- solve(index + 1、sums、target、nums)がtrueの場合、trueを返します
- sums [i]:=sums [i] – nums [index]
- falseを返す
- メインの方法から、次の手順を実行します-
- numsに要素がない場合は、falseを返します
- x:=0
- 範囲0からnumsのサイズのiの場合、xをnums [j] 増やします。
- xが4で割り切れる場合は、falseを返します
- nums配列を並べ替える
- サイズ4の配列の合計を作成します
- returnsolve(0、sum、x / 4、nums)
理解を深めるために、次の実装を見てみましょう-
例
#include <bits/stdc++.h> using namespace std; class Solution { public: bool solve(int idx, vector <int>& sums, int target, vector <int>& nums){ if(idx >= nums.size()){ return sums[0] == sums[1] && sums[1] == sums[2] && sums[2] == target; } for(int i = 0; i < 4; i++){ if(sums[i] + nums[idx] > target)continue; sums[i] += nums[idx]; if(solve(idx + 1, sums, target, nums)) return true; sums[i] -= nums[idx]; } return false; } bool makesquare(vector<int>& nums) { if(nums.size() == 0) return false; int x = 0; for(int i = 0; i < nums.size(); i++){ x += nums[i]; } if(x % 4) return false; sort(nums.rbegin(), nums.rend()); vector <int> sum(4); return solve(0, sum,x / 4, nums); } }; main(){ vector<int> v = {1,1,2,2,2}; Solution ob; cout << (ob.makesquare(v)); }
入力
[1,1,2,2,2]
出力
1
-
C++の正方形の外接円の面積
この問題では、正方形の辺が与えられたときに、正方形の外接円の面積を計算します。先に進む前に、概念をよりよく理解するために基本的な定義を修正しましょう。 正方形 はすべての辺が等しい四辺形です。 外接円 円はポリゴンのすべての頂点に接しています。 エリア は、任意の2次元図形の範囲を定量的に表したものです。 正方形の外接円の面積を計算します。円と正方形のパラメータの関係を見つける必要があります。 これで、図のように、正方形のすべての頂点が円に接触しています。この図を見ると、正方形の対角線は円の直径に等しいと結論付けることができます。 これを使用して、円の直径と正方形の辺の関係を
-
C++のvoid関数から戻る
void関数は、何も返さないため、voidと呼ばれます。 「void関数は何も返すことができません」このステートメントは常に真であるとは限りません。 void関数からは値を返すことはできませんが、値以外のものを返すことはできます。それらのいくつかは以下のようなものです。 void関数は戻ることができます void関数は値を返すことはできません。ただし、returnステートメントを使用することはできます。機能が終了したことを示します。コードの可読性が向上します。 サンプルコード #include <iostream> using namespace std; void my_fu