No.2ベストアンサー
- 回答日時:
フォントによっては見難いですが アイ と ジェー ですね.
与えられた命題にこっそり隠されているヒント(条件)を見つけましょう
ポイントは
(1) "整数"と条件があること. 負数は含まれません.
(2) "加算"のみであること. A[i] > x ならどんな整数を加算しても条件を満たしません.
付け加えるならば,
(3) "存在するかどうかを判定する"のみで要素番号を示す必要はありません.
以上から
・配列Aをソートし配列aとする. ※ポイント(3)
・二分探索を用いてa[k] < xを満たすkを探す. ※ポイント(2)
・二分探索を用いてa[l] < x - a[k] を満たすlを探す
・HITしたら処理終了 ※ポイント(3)
もっと良いアルゴリズムもあるかもしれませんが、
ざっくりとO(n^2)よりO(log2n)を使える状態にしたほうが効率は良いでしょう.
さらに正解に近づけるためにはソートに掛かるコストも算出し,
処理効率が切り替わるnの値も出す必要があるでしょう.
No.5
- 回答日時:
いかにもレポートや宿題のように見えるのであまり詳しい話は避けているのですが、自然数だけだと勘違いをしていましたので、補足です。
A[i]が自然数という前提なら、x個のバケツを用意すれば一回なめるだけでOKです。
A[i]が整数でも、自然数に変換してからバケツを用意すれば同じアルゴリズムが使えますので、これまたO(n)です。
ただ、メモリが確保出来るとは限らないので、実際はこの手段は取れません。ツリーかハッシュテーブルを作ることになります。
ハッシュテーブルの探索挿入は一応O(1)と言われているので、(やや回りくどいですが)これまた O(n) と言えないこともないでしょう。
No.4
- 回答日時:
まずこの問題は「部分和問題」ではありません. そして, 「NP完全問題なので、総当たりのO(n^2)より効率のいい方法がないと思う」も間違い. NP完全なら O(n^2) はありえないし, NP完全であっても「総当たりより効率のいい方法がない」とも限りません.
さておき, 今は加えるのが 2個に限定されてますから,
A[i] + A[j] = x iff (A[i]+M) + (A[j]+M) = x+2M
です. つまり, A[i] は全て正と仮定してもかまいません>#3. あと, ソートしたあとは O(n) でできます. どうせソートしてるので O(n log n) であることに変わりありませんが.
全体で O(n) は無理な気がするけどどう示すんだろう?
No.3
- 回答日時:
ど勘違いしてました.
整数ですので負数が含まれますね.
手順はさほど変わりませんが負数をケアする必要があります
・配列Aをソートし配列aとする.
・最小値a[k]を二分探索.
・a[k]が負数の場合, a[l] > a[k]となるlを二分探索.
・a[k]が整数の場合, a[l] < x - a[k] となるlを二分探索.
お恥ずかしい・・・
No.1
- 回答日時:
二つの合計だけを判定するなら、x個のバケツを用意して順次突っ込んでいけば、O(n)で済むように思えますね。
問題としては、
A[i] == A[j] となる組み合わせを探すアルゴリズムを答えよ
と変わりないですよね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 『4色問題③』 2 2022/11/14 00:31
- 数学 時々、回答者の見識に疑念を抱いてしまうんです。私だって本当は皆様のことを疑いたくはありません。しかし 2 2022/11/27 12:23
- 数学 『完全<困難』 2 2022/11/28 06:36
- 高校受験 数学の問題いくつか捨てても大丈夫?残り1ヶ月、点数が取れない教科ばっか勉強しても大丈夫? 高校受験 2 2023/01/07 17:55
- 統計学 期待値を求める問題はとりあえず確率を全部出せばいいってことで答えは出せるのですが、なぜそれぞれの確率 2 2023/07/08 23:11
- 数学 【 数I 分散 】 3 2023/02/26 21:55
- 統計学 統計量および正規分布と分散の加法性の演習問題です。 5 2023/07/29 10:46
- 計算機科学 判定問題がPに属するなら探索問題はNPに属する。では判定問題がNPに属するとき探索問題は? 2 2023/05/20 19:10
- 簿記検定・漢字検定・秘書検定 日商簿記2級の税効果会計の練習問題について納得行かないものがあります。 練習問題① 決算において、そ 3 2022/03/24 14:18
- 数学 数学Aについて分からない問題があります。 答えは載っているので分かりますが、 解き方がわかりません。 5 2023/02/03 18:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
System.IO.Directory.GetFiles...
-
C# DataGridView のヘッダーセ...
-
C# DataTableの行をソートしてD...
-
VB.NETでファイル名順にファイ...
-
excel VBA リストビューの行...
-
ファイル名「1.jpg ~10.jpg~...
-
Excelですべての組合せ(重複組...
-
VBA基本構文の作り方 2列の...
-
数字文字列のソート方法
-
あるディレクトリ内のファイル...
-
C言語・要素除去
-
VBScriptで配列のソートをする...
-
DataGridViewの複数列を連動し...
-
vbでDataTableの抽出コピー
-
VB6でデータを昇順に並べ替える
-
アルゴリズムについて教えてく...
-
excel VBA の条件をつけての列...
-
n番目に大きい数を求めるアル...
-
SQLで検索結果の出力件数指定?
-
サイトで価格順で表示するなど...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
System.IO.Directory.GetFiles...
-
VB.NETでファイル名順にファイ...
-
ファイル名「1.jpg ~10.jpg~...
-
リスト構造のソートで悩んでま...
-
excel VBA の条件をつけての列...
-
C# DataGridView のヘッダーセ...
-
DataGridViewの複数列を連動し...
-
文字列をソートする方法
-
C言語・要素除去
-
C# DataTableの行をソートしてD...
-
Excelですべての組合せ(重複組...
-
VBA基本構文の作り方 2列の...
-
列のどこをクリックしてもソー...
-
excel VBA リストビューの行...
-
あるディレクトリ内のファイル...
-
コレクションの数値をSortで並...
-
数字文字列のソート方法
-
VBScriptで重複レコードを削除...
-
2次元配列を複数項目でソートし...
-
10個の整数を入力して小さい順...
おすすめ情報