C++のすべてのサブシーケンスの合計を求めます
| サブセット | 合計 |
|---|---|
| 5 | 5 |
| 6 | 6 |
| 8 | 8 |
| 5,6 | 11 |
| 6,8 | 14 |
| 5,8 | 13 |
| 5,6,8 | 19 |
| 合計 | 76 |
配列にはn個の要素があるため、2n個のサブセット(空を含む)があります。はっきりと観察すると、各要素が2n〜1回発生していることがわかります
例
#include<iostream>
#include<cmath>
using namespace std;
int totalSum(int arr[], int n) {
int res = 0;
for (int i = 0; i < n; i++)
res += arr[i];
return res * pow(2, n - 1);
}
int main() {
int arr[] = { 5, 6, 8 };
int n = sizeof(arr)/sizeof(arr[0]);
cout << "Total sum of the sum of all subsets: " << totalSum(arr, n) << endl;
} 出力
Total sum of the sum of all subsets: 76
-
C++で平行四辺形のすべての可能な座標を検索します
与えられた3つの座標から可能なすべての座標を見つけて、ゼロ以外の領域の平行四辺形を作成します。 A、B、Cが3つの与えられたポイントであり、考えられる状況は3つだけであると仮定します。 AB、ACは側面、BCは対角線です AB、BCは側面、ACは対角線です BC、ACは側面、ABは対角線です したがって、3つの座標が与えられた場合、平行四辺形を生成できる3つの座標のみが可能であると言えます。反対側が等しいので、AD =BC、AB =CDであるため、次のように欠落点Dの座標を計算します- (Dx-Ax,Dy-Ay) = (Cx-Bx,Cy-By) Dx = Ax+Cx-Bx Dy =
-
C ++で配列のすべての個別のサブセット(またはサブシーケンス)の合計を検索します
整数のセットがあるとします。与えられたセットのサブセットから形成できる明確な合計を見つけて、昇順で印刷します。配列要素の合計は小さいです。配列要素が[1、2、3]のようなものだと考えてください。出力は0、1、2、3、4、5、6になります。個別のサブセットは{}、{1}、{2}、{3}、{1、2}、{2、3}、{1です。 、3}、{1、2、3}、合計値は0、1、2、3、3、5、4、6です。 これを解決するために、動的計画法のアプローチを使用します。指定された要素の合計が小さい場合、配列のサイズを含む行を含むDPテーブルを作成できます。列のサイズは、指定された配列内のすべての要素の合計になります